1.添加依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

2. 配置yml文件

spring:
rabbitmq:
host: ip
port: 5672
password: *****
username: *****
virtual-host: /dev_virtual

3.引入springboot中的注解和类

  • 启动类增加 @EnableRabbit注解
  • 引入rabbitmq管理类
   @Autowired
private RabbitTemplate rabbitTemplate;//用于消息处理 @Autowired
private RabbitAdmin rabbitAdmin; //用于管理组件

4.测试DIRECT模式消息队列

  • 代码创建exchange和queue
  @Test
public void buildRabbit(){
//交换机
Exchange exchange = new ExchangeBuilder("exchange_direct", ExchangeTypes.DIRECT).durable(true).build();
rabbitAdmin.declareExchange(exchange);
//队列
Queue queue = QueueBuilder.durable("queue_lpf").build();
rabbitAdmin.declareQueue(queue);
//绑定
Binding binding = BindingBuilder.bind(queue).to(exchange).with("mq_key").noargs();
rabbitAdmin.declareBinding(binding);
String beanName = rabbitAdmin.getBeanName();
System.out.println("buildRabbit"+beanName);
}
  • provider发送消息
  @Test
public void sendRabbitInfo() {
CorrelationData data = new CorrelationData(UUID.randomUUID().toString().replace("-", ""));
Book book = new Book("红楼梦","曹雪芹");
rabbitTemplate.convertAndSend("exchange_direct", "mq_key", sendMessage,data);
}
  • consumer接收发送的消息
  @RabbitListener(queues="queue_lpf")
public void getMessage(Map message){
System.out.println("********************************************************");
System.out.println(message);
System.out.println("********************************************************");
}

5.测试TOPIC模式发送数据

  • 代码创建EXCHANGE 和 QUEUE
@Test
public void buildTopicRabbit(){
Exchange topicExchange = new ExchangeBuilder("topic_exchange", ExchangeTypes.TOPIC).durable(true).build();
rabbitAdmin.declareExchange(topicExchange);
Queue queue1 = QueueBuilder.durable("queue_topic").build();
rabbitAdmin.declareQueue(queue1);
Queue queue2 = QueueBuilder.durable("queue_lpf").build();
rabbitAdmin.declareQueue(queue2);
Queue queue3 = QueueBuilder.durable("topic_lpf").build();
rabbitAdmin.declareQueue(queue3);
//队列和交换器绑定
Binding binding = BindingBuilder.bind(queue1).to(topicExchange).with("#.topic").noargs();
Binding binding1 = BindingBuilder.bind(queue2).to(topicExchange).with("queue.#").noargs();
Binding binding2 = BindingBuilder.bind(queue3).to(topicExchange).with("#.lpf").noargs();
rabbitAdmin.declareBinding(binding);
rabbitAdmin.declareBinding(binding1);
rabbitAdmin.declareBinding(binding2);
}
  • privider 发送消息
 @Test
public void sendMsg(){
CorrelationData data = new CorrelationData(UUID.randomUUID().toString().replace("-", ""));
String message="this is a topic message(queue.lpf is the routingkey)";
rabbitTemplate.convertAndSend("topic_exchange","queue.lpf", (Object) message,data);
}
  • 在management管理页面查看收到的信息

6.遇到的问题

问题1:org.springframework.amqp.AmqpIllegalStateException: Fatal exception on listener startup

看到很多人说是rabbitmq账号的权限问题,经过多番测试无果。
根据 报错详细,发现是有一个@RabbitListener 监听队列 ,这个队列没有创建。所以造成了这个问题。
注释掉久可以了。

02.RabbitMQ整合springboot简单使用的更多相关文章

  1. 消息中间件——RabbitMQ(十)RabbitMQ整合SpringBoot实战!(全)

    前言 1. SpringBoot整合配置详解 publisher-confirms,实现一个监听器用于监听Broker端给我们返回的确认请求:RabbitTemplate.ConfirmCallbac ...

  2. RabbitMQ从概念到使用、从Docker安装到RabbitMQ整合Springboot【1.5w字保姆级教学】

    @ 目录 一.前言 二.RabbitMQ作用 1. 异步处理 2. 应用解耦 3. 流量控制 三.RabbitMQ概念 1. RabbitMQ简介 2. 核心概念 四.JMS与AMQP比较 五.Rab ...

  3. RabbitMQ和SpringBoot的简单整合列子

    一 思路总结 1 主要用spring-boot-starter-amqp来整合RabbitMQ和SpringBoot 2 使用spring-boot-starter-test来进行单元测试 3编写配置 ...

  4. SpringBoot系列八:SpringBoot整合消息服务(SpringBoot 整合 ActiveMQ、SpringBoot 整合 RabbitMQ、SpringBoot 整合 Kafka)

    声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念:SpringBoot 整合消息服务 2.具体内容 对于异步消息组件在实际的应用之中会有两类: · JMS:代表作就是 ...

  5. SpringBoot简单整合redis

    Jedis和Lettuce Lettuce 和 Jedis 的定位都是Redis的client,所以他们当然可以直接连接redis server. Jedis在实现上是直接连接的redis serve ...

  6. rabbit的简单搭建,java使用rabbitmq queue的简单例子和一些坑

    一 整合 由于本人的码云太多太乱了,于是决定一个一个的整合到一个springboot项目里面. 附上自己的项目地址https://github.com/247292980/spring-boot 以整 ...

  7. RabbitMQ交换机、RabbitMQ整合springCloud

    目标 1.交换机 2.RabbitMQ整合springCloud 交换机 蓝色区域===生产者 红色区域===Server:又称Broker,接受客户端的连接,实现AMQP实体服务 绿色区域===消费 ...

  8. 整合springboot(app后台框架搭建四)

    springboot可以说是为了适用SOA服务出现,一方面,极大的简便了配置,加速了开发速度:第二方面,也是一个嵌入式的web服务,通过jar包运行就是一个web服务: 还有提供了很多metric,i ...

  9. 【SpringBoot】搜索框架ElasticSearch介绍和整合SpringBoot

    ========================12章 搜索框架ElasticSearch介绍和整合SpringBoot ============================= 加入小D课堂技术交 ...

随机推荐

  1. Java实现 蓝桥杯 历届试题 带分数

    问题描述 100 可以表示为带分数的形式:100 = 3 + 69258 / 714. 还可以表示为:100 = 82 + 3546 / 197. 注意特征:带分数中,数字1~9分别出现且只出现一次( ...

  2. Java实现第十届蓝桥杯人物相关性分析

    试题 H: 人物相关性分析 时间限制: 1.0s 内存限制: 512.0MB 本题总分:20 分 [问题描述] 小明正在分析一本小说中的人物相关性.他想知道在小说中 Alice 和 Bob 有多少次同 ...

  3. Linux目录结构与功能

    在Linux中,一切皆文件.所以,Linux和Windows目录有很大的不同,它没有明确的盘符,它的目录就像一棵大树一样,顶层目录就是根目录:/ ,然后下面又有很多个分支,分支可以再分,从而形成一个庞 ...

  4. Linux: 如何分割文件,不再被 4G 大小限制了

    单文件 4G 限制 FAT32 4G 限制 百度网盘超出 4G 限制 单文件分割与合并 单文件,如:archive.tar.gz 分割 split -b 3000M -d -a 1 archive.t ...

  5. cuda 9.0

    https://docs.nvidia.com/cuda/archive/9.0/index.html cuda9.0工具包

  6. 2020最新IDEA插件大集合,一款能帮助你写代码的工具是多么重要

    摘要 12款为用户精心打造的Idea插件,含盖前后端,另把使用小技巧分享给大家,提高大家的码率,希望对你们有帮助! Lombok Lombok为Java项目提供了非常有趣的附加功能,使用它的注解可以有 ...

  7. ubuntu12.04 qtcreate支持中文输入

    1.sudo apt-get install ibus-qt4 2.重启电脑 reboot

  8. Vim配合Shell自动上传ftp

    shell代码: #!/bin/bash #网站配置 a1=('本地目录;主机;yonghuming;mima;远程目录' '本地目录;主机;user;pwd;远程目录') #选取的网站配置 web= ...

  9. DML_Data Modification_UPDATE

    DML_Data Modification_UPDATE写不进去,不能专注了...... /* */ ------------------------------------------------- ...

  10. 4.WebPack-Loader

    一.什么是Loader WebPack默认只"认识"以*.js结尾的文件,如果想处理其他类型的文件,就必须添加Loader,有各种各样的Loader,每个Loader可处理不同类型 ...