1.添加依赖

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-amqp</artifactId>
  4. </dependency>

2. 配置yml文件

  1. spring:
  2. rabbitmq:
  3. host: ip
  4. port: 5672
  5. password: *****
  6. username: *****
  7. virtual-host: /dev_virtual

3.引入springboot中的注解和类

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

4.测试DIRECT模式消息队列

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

5.测试TOPIC模式发送数据

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

6.遇到的问题

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

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

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. mysql中drop、delete、truncate的区别简述

    一.区别 1.去什么? truncate table 和 delete只删除数据(记录)不删除表的结构;drop语句将删除表的数据(记录)和表结构依赖的约束(constrain),触发器(trigge ...

  2. 01.vue-router的基本使用

    Vue前端路由 1. npm install vue-router --save 2.脚手架安装 一.目录结构 二.index.js // 0.导入vue和路由插件 import Vue from ' ...

  3. 基于ABP做一个简单的系统——实战篇:2.代码生成器

    上一篇正说着呢,代码生成器就来了. 1.适用于ABP官网的Startup Template V3.x的包含了登录.用户等页面的MPA应用模板2.当前view仅支持文本框生成,远期规划根据字段类型生成不 ...

  4. python2.7 正则表达式的学习

    正则表达式是一种用来匹配字符串的强有力的武器.它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的. 因正则表达式也是用字符 ...

  5. Excel常用公式大全

    公式是单个或多个函数的结合运用. AND “与”运算,返回逻辑值,仅当有参数的结果均为逻辑“真(TRUE)”时返回逻辑“真(TRUE)”,反之返回逻辑“假(FALSE)”. 条件判断 AVERAGE ...

  6. delete语句的基本用法

    DELETE FROM tb_courses WHERE course_id=;

  7. Maven发展历史

    1.1 Maven是什么 Maven是一个项目管理和综合工具. Maven提供了开发人员构建一个完整的生命周期框架.开发者团队可以自动完成项目的基础工具建设, Maven使用标准的目录结构和默认构建生 ...

  8. 说说TCP的三次握手和四次挥手

    一.传输控制协议TCP简介 1.1 简介 TCP(Transmission Control Protocol) 传输控制协议,是一种 面向连接的.可靠的.基于字节流的传输层 通信协议. TCP是一种面 ...

  9. Java WebService学习笔记 - Axis进阶(二)

    上一篇  Java WebService学习笔记 - Axis(一) 前一篇博文中简单介绍了Axis的使用方法,这篇将介绍一些Axis的一些高级特性 Axis中Handler的使用 Handler ...

  10. 黎活明8天快速掌握android视频教程--22_访问通信录中的联系人和添加联系人

    Android系统中联系人的通讯录的contentProvide是一个单独的apk,显示在界面的contact也是一个独立的apk,联系人apk通过contentProvide访问底层的数据库. 现在 ...