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. PAT 部分A+B

    正整数​​A的“DA(为 1 位整数)部分”定义为由A中所有DA组成的新整数PA,例如:给定A=3862767,DA=6,则A的“6 部分”PA是 66,因为A中有 2 个 6. 现给定A,DA,B, ...

  2. [CF1270F]Awesome Substrings

    题目   点这里看题目. 分析   设前缀和\(s_r=\sum_{i=1}^r [S_i='1']\)   考虑满足要求的子串\((l,r]\)的要求: \[\exists k\in N_+, r- ...

  3. (二)Java编程基础

    目录 一.关键字与保留字 二.标识符与变量 三.基本数据类型的转换 四.运算符 五.分支语句 五.循环语句 六.跳转语句 七.Java从键盘读取输入 一.关键字与保留字 定义:①关键字:Java关键字 ...

  4. Chrome浏览器 Console调试台的简单使用

    打开调试台 方法1:在chrome浏览器中打开网页,按下F12,点击下图框选内容. 方法2: 浏览器中鼠标右键选择查看网页源代码后,再按上图操作.  调试台的功能 (因为是第一次使用这个调试台,只能罗 ...

  5. vsftpd服务器配置与使用

    1.ftp简介 网络文件的共享主流的主要有三种,分别为ftp.nfs.samba ftp用于internet上的控制文件的双向传输 上传和下载的操作 下载 上传 将主机中的内容拷贝到计算机上 将文件从 ...

  6. 2019-02-04 Linux的一些常用命令学习

    今天在电脑里用装了个ubuntu的虚拟机,学习了一下基本操作 ls ls用于查看文件夹的文件 mkdir mkdir可以创建一个文件夹(directory) cd 目录切换 pwd print wor ...

  7. numpy中transpose的功能

    看了网上一堆解释,有用相互交换来解释的,我看了半天也看不出所以然来.心想着自己试验一下. numpy.transpose的用法很简单:假如你有一个四维的数组,那么四个维度就是0,1,2,3.风格会像下 ...

  8. MFC时间简单比较方法

    MFC//时间简单比较方法 void CMFCsaveListTofileDlg::OnBnClickedButton6()//时间简单比较方法 { // TODO: 在此添加控件通知处理程序代码 C ...

  9. winxp系统连接服务器丢包解决方法

    winxp系统连接服务器丢包解决方法 MFC编写一个打开网页的程序,发生异常没有获取到数据. 分析步骤: 1. 用getLastError()获取到的信息,(2)- 系统找不到指定的文件. 2. 用浏 ...

  10. cb44a_c++_STL_算法_删除_(2)remove_copy_remove_copy_if

    cb44a_c++_STL_算法_删除_(2)remove_copy_remove_copy_if remove_copy()//在复制过程中删除一些数据remove_copy_if() 删除性算法: ...