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. awardRotate转盘插件文字模糊问题和图片加载问题

    前言 最近在做一个转盘抽奖页面,使用了awardRotate.js发现字体和图片都有模糊,绘制的时候图片绘制不全,搜索一下之后发现针对awardRotate的解决方法比较少,针对canvas的比较多, ...

  2. ELK 收集交换机日志(以华为交换机为例)

    大概思路 交换机日志----> 服务器---->服务器rsyslog设置指定存储路径文件--->随后就跟elk 监控本机日志一样了 huawei switch: #指定发送消息基本, ...

  3. Kubernetes日志的6个最佳实践

    本文转自Rancher Labs Kubernetes可以帮助管理部署在Pod中的上百个容器的生命周期.它是高度分布式的并且各个部分是动态的.一个已经实现的Kubernetes环境通常涉及带有集群和节 ...

  4. .Net Core WebAPI + Axios +Vue 实现下载与下载进度条

    故事的开始 老板说:系统很慢,下载半个小时无法下载,是否考虑先压缩再给用户下载? 本来是已经压缩过了,不过第一反应应该是用户下的数量多,导致压缩包很大,然后自己测试发现,只是等待的时间比较久而已,仍然 ...

  5. c#撸的控制台版2048小游戏

    1.分析 最近心血来潮,突然想写一个2048小游戏.于是搜索了一个在线2048玩玩,熟悉熟悉规则. 只谈核心规则:(以左移为例) 1.1合并 以行为单位,忽略0位,每列依次向左进行合并,且每列只能合并 ...

  6. AttributeError: 'PyQt5.QtCore.pyqtSignal' object has no attribute 'connect'

    pyqt5信号要定义为类属性 #!/usr/bin/python3 # -*- coding: utf-8 -*- from PyQt5.Qt import * import sys class Wi ...

  7. hadoop知识整理(1)之HDFS

    一.HDFS是一个分布式文件系统 体系架构: hdfs主要包含了3部分,namenode.datanode和secondaryNameNode namenode主要作用和运行方式: 1)管理hdfs的 ...

  8. python模拟网站登陆-滑动验证码

    普通滑动验证 以http://admin.emaotai.cn/login.aspx为例这类验证码只需要我们将滑块拖动指定位置,处理起来比较简单.拖动之前需要先将滚动条滚动到指定元素位置. impor ...

  9. 匿名实现类&匿名对象

    学习过程中经常搞不清匿名类&匿名对象怎么用,今天就把常用的方式总结一遍. 1.创建了非匿名实现类的非匿名对象 //定义USB接口 interface USB{ void inputInofo( ...

  10. (十三)exec-maven-plugin配置及使用

    原文链接:https://www.cnblogs.com/lianshan/p/7358966.html 背景: 如果你想在项maven生命周期内,运行一段java代码,或者一段独立的程序,或者说我们 ...