02.RabbitMQ整合springboot简单使用
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简单使用的更多相关文章
- 消息中间件——RabbitMQ(十)RabbitMQ整合SpringBoot实战!(全)
前言 1. SpringBoot整合配置详解 publisher-confirms,实现一个监听器用于监听Broker端给我们返回的确认请求:RabbitTemplate.ConfirmCallbac ...
- RabbitMQ从概念到使用、从Docker安装到RabbitMQ整合Springboot【1.5w字保姆级教学】
@ 目录 一.前言 二.RabbitMQ作用 1. 异步处理 2. 应用解耦 3. 流量控制 三.RabbitMQ概念 1. RabbitMQ简介 2. 核心概念 四.JMS与AMQP比较 五.Rab ...
- RabbitMQ和SpringBoot的简单整合列子
一 思路总结 1 主要用spring-boot-starter-amqp来整合RabbitMQ和SpringBoot 2 使用spring-boot-starter-test来进行单元测试 3编写配置 ...
- SpringBoot系列八:SpringBoot整合消息服务(SpringBoot 整合 ActiveMQ、SpringBoot 整合 RabbitMQ、SpringBoot 整合 Kafka)
声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念:SpringBoot 整合消息服务 2.具体内容 对于异步消息组件在实际的应用之中会有两类: · JMS:代表作就是 ...
- SpringBoot简单整合redis
Jedis和Lettuce Lettuce 和 Jedis 的定位都是Redis的client,所以他们当然可以直接连接redis server. Jedis在实现上是直接连接的redis serve ...
- rabbit的简单搭建,java使用rabbitmq queue的简单例子和一些坑
一 整合 由于本人的码云太多太乱了,于是决定一个一个的整合到一个springboot项目里面. 附上自己的项目地址https://github.com/247292980/spring-boot 以整 ...
- RabbitMQ交换机、RabbitMQ整合springCloud
目标 1.交换机 2.RabbitMQ整合springCloud 交换机 蓝色区域===生产者 红色区域===Server:又称Broker,接受客户端的连接,实现AMQP实体服务 绿色区域===消费 ...
- 整合springboot(app后台框架搭建四)
springboot可以说是为了适用SOA服务出现,一方面,极大的简便了配置,加速了开发速度:第二方面,也是一个嵌入式的web服务,通过jar包运行就是一个web服务: 还有提供了很多metric,i ...
- 【SpringBoot】搜索框架ElasticSearch介绍和整合SpringBoot
========================12章 搜索框架ElasticSearch介绍和整合SpringBoot ============================= 加入小D课堂技术交 ...
随机推荐
- Java实现打印回型嵌套
*********** * * * ******* * * * * * * * *** * * * * * * * * * * *** * * * * * * * ******* * * * **** ...
- java实现第七届蓝桥杯打印数字
打印数字 打印数字 小明写了一个有趣的程序,给定一串数字. 它可以输出这串数字拼出放大的自己的样子. 比如"2016"会输出为: 00000 1 6666 2 0 0 1 1 6 ...
- 关于晶体问题TCXO_14.7456MHZ
如何判断热点的晶体好不好,首先,看偏移,偏移为0的晶体一般就是温补晶体,当然偏移是500或者几百固定的也是温补,但是不是我们首选的温补晶体 因为偏移为0非常省事,这是系统默认的偏移0,因此设置好频率就 ...
- LiveCharts 提示框(DataTooltip)百分比一直为0.00%解决办法
LiveCharts 提示框(DataTooltip)百分比一直为0.00%解决办法 问题描述:在使用LiveCharts 开源图标库的时候,使用CartesianChart类图表,当Series为L ...
- @codeforces - 607E@ Cross Sum
目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定 n 条直线,构造可重点集合 I 为 n 条直线两两的交点集 ...
- 基于移动最小二乘法的点云曲面拟合(python)
1.移动最小二乘法介绍 为了更好地对数据量大且形状复杂的离散数据进行拟合,曾清红等人[1]开发出一种新的算法——移动最小二乘法.这种新的最小二乘算法为点云数据的处理提供了新的方法.使用点云数据拟合曲面 ...
- centos7 hive 单机模式安装配置
前言:由于只是在自己的虚拟机上进行学习,所以对hive只是进行最简单的配置,其他复杂的配置文件没有配置. 1.前提 1.1 安装配置jdk1.8 1.2 安装hadoop2.x hadoop单机模式安 ...
- JSONobject按照put顺序存储和读取
new的时候加true即可: JSONObject jsonObject = new JSONObject(true);
- [CentOS 7]挂载ntfs格式U盘
在我们将U盘插入装有CentOS的系统时,经常会出现如图所示的错误提示.这是因为linux系统并不能兼容NTFS的文件系统.其解决方法如下(建议先进入root模式): 1.首先下载"ntfs ...
- 9.实战交付一套dubbo微服务到k8s集群(2)之Jenkins部署
1.下载Jenkins镜像打包上传harbor上 [root@hdss7- ~]# docker pull jenkins/jenkins:2.190. [root@hdss7- ~]# docker ...