rabbitmq多个消费者消费同一个队列中的同一条消息。
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、rabbitmq是什么?
- 二、使用步骤
- 1.引入库
- 2.rabbitmq相关配置
- 3.生产者代码
- 4.多个消费者,消费同一条数据。
- 总结
前言
使用springboot整合rabbitmq实现,一个生产者生产一条数据,多个消费者消费同一条数据案例,可以解决微服务分布式事务控制。保证最终一致性原则。
提示:以下是本篇文章正文内容,下面案例可供参考
一、rabbitmq是什么?
相对简易得一种消息中间件,功能强大,性能中等,吞吐量一般。
二、使用步骤
1.引入库
代码如下(示例):
<!-- rabbitmq消息队列--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.62</version></dependency>
2.rabbitmq相关配置
@Configuration
public class RabbitmqConfig {@Beanpublic Queue queue1() {return new Queue("queue1",true);}@Beanpublic FanoutExchange exchange1() {return new FanoutExchange("exchange1",true, false);}@Beanpublic Binding binding1() {return BindingBuilder.bind(queue1()).to(exchange1());}
}
注:因为是fanout广播模式,所以不用配置路由键。
3.生产者代码
代码如下(示例):
@Resource
private RabbitTemplate rabbitTemplate;@Test
public void pushMessage() {HashMap<Object, Object> hashMap = new HashMap<>();hashMap.put("name","zhangsan");hashMap.put("age","18");rabbitTemplate.convertAndSend("exchange1","", hashMap);
}
4.多个消费者,消费同一条数据。
消费者1号:
代码如下(示例):
@Component
public class RabbitMqConsumer {// @RabbitListener(queues = "queue1")@RabbitListener(bindings = @QueueBinding(// value = @Queue(value = "queue1"),value = @Queue(), //切记: 此处无需设置队列名称,否在得话,多个消费者只有一个消费者能消费数据。其它消费者无法消费数据。exchange = @Exchange(value = "exchange1",type = ExchangeTypes.FANOUT)))public void getData(Message message) {try {String str = new String(message.getBody(),"utf-8");System.out.println(str);} catch (Exception e) {e.printStackTrace();}}
}
消费者2号:
代码如下(示例):
@Component
public class RabbitMqConsumer {// @RabbitListener(queues = "queue1")@RabbitListener(bindings = @QueueBinding(// value = @Queue(value = "queue1"),value = @Queue(), //切记: 此处无需设置队列名称,否在得话,多个消费者只有一个消费者能消费数据。其它消费者无法消费数据。exchange = @Exchange(value = "exchange1",type = ExchangeTypes.FANOUT)))public void getData(Message message) {try {String str = new String(message.getBody(),"utf-8");System.out.println(str);} catch (Exception e) {e.printStackTrace();}}
}
结束,希望能够帮助各位。
总结
人生物语:活得优雅些。也许你的生活并不富裕;也许你的工作不够好;也许你正处在困境中;也许你被情所弃。不论什么原因,请你在出门时,一定要让自己面带微笑,从容自若地去面对生活。只要你自己真正撑起来了,别人无论如何是压不垮你的。
rabbitmq多个消费者消费同一个队列中的同一条消息。相关推荐
- rabbitmq 不同的消费者消费同一个队列_RabbitMQ 消费端限流、TTL、死信队列
消费端限流 1. 为什么要对消费端限流 假设一个场景,首先,我们 Rabbitmq 服务器积压了有上万条未处理的消息,我们随便打开一个消费者客户端,会出现这样情况: 巨量的消息瞬间全部推送过来,但是我 ...
- rabbitmq 不同的消费者消费同一个队列_消息队列王者--rabbitMQ深入理解--工作过程、消费模式、持久化等...
概述 之前已经对rabbitMQ的一些基本概念做了介绍和不同MQ之间的比较,今天主要对rabbitMQ的一些方面做扩展. 01 消息队列 Broker:简单来说就是消息队列服务器实体. Exchang ...
- java 如何判定消息已在队列_【05期】消息队列中,如何保证消息的顺序性?
本文选自:advanced-java 作者:yanglbme 问:如何保证消息的顺序性? 面试官心理分析 其实这个也是用 MQ 的时候必问的话题,第一看看你了不了解顺序这个事儿?第二看看你有没有办法保 ...
- videojs如何获取请求消息_消息队列中,如何保证消息的顺序性?
点击?蓝色" 深入原理",关注并"设为星标" 技术干货,第一时间推送 消息无序产生的原因 消息队列,既然是队列就能保证消息在进入队列,以及出队列的时候保证消息的 ...
- Spring Cloud Stream与RabbitMQ 生产者和消费者位于同一个应用服务
第一种模型:交换机类型为topic,路由key为"#",这是简单的使用模型 当前Spring Cloud Rabbit的版本为2.1.2 <dependency>< ...
- 请教!rabbitMQ怎么确认同一个队列所有消费者收到消息?
求大神指导~ 查看了很多能查到的文档都没有找到明确说明的,rabbit的发布订阅和ActiveMq 的发布订阅有所区别,我之前一直用 ActiveMq 的 后来公司要求改为rabbitMQ,请问 ...
- rabbitmq多个消费者监听一个队列_RabbitMQ的六种工作模式
一.基于erlang语言:是一种支持高并发的语言 RabbitMQ的六种工作模式: 1.1 simple简单模式 消息产生着§将消息放入队列 消息的消费者(consumer) 监听(while) 消息 ...
- 消息中间件--RabbitMQ ---高级特性之消费端ACK与重回队列
什么是消费端的ACK和重回队列? 消费端的手工ACK和NACK 消费端进行消费的时候,如果由于业务异常我们可以进行日志的记录,然后进行补偿 如果由于服务器宕机等严重问题,那我们就需要手工进行ACK保障 ...
- Kafka多个消费者监听消费同一个Topic主题
多个消费者监听消费同一个Topic主题 一.需求介绍 二.@kafkaListener注解 三.代码实现 3.1 第一个消费者 3.2 第二个消费者 3.3 生产者 四.测试 一.需求介绍 有一个To ...
最新文章
- js正则验证特殊字符
- 简单的无监督词统计nlp预测模型
- Tautology--POJ 3295
- mac SecureCRT设置
- Python批量Excel文件数据导入SQLite数据库的优化方案
- The idea of ​​router network configuration
- 【SPOJ1297】Palindrome (SA+RMQ)
- Atitit. 软件GUI按钮与仪表盘--web服务器区--获取apache配置文件路径 linux and apache的启动、停止、重启
- 在线直播系统源码,进入新的界面后自动刷新内容
- 高速PCB设计注意事项
- Problem C: 车牌限行
- “做我女朋友好吗?”vbs源码
- 正方形数目 cmp 栈
- 《畅玩NAS》第8章 ZeroTier组建局域网
- configure: error: Package requirements (libwebp) were not met:
- RBAC权限框架_MVC权限框架
- C语言基础入门——打印“hello word“
- 1 什么是末端柔顺控制?
- 大多数日志文件的后缀名是_log4j(添加日志)
- 简介IntelliJ IDEAD