提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、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多个消费者消费同一个队列中的同一条消息。相关推荐

  1. rabbitmq 不同的消费者消费同一个队列_RabbitMQ 消费端限流、TTL、死信队列

    消费端限流 1. 为什么要对消费端限流 假设一个场景,首先,我们 Rabbitmq 服务器积压了有上万条未处理的消息,我们随便打开一个消费者客户端,会出现这样情况: 巨量的消息瞬间全部推送过来,但是我 ...

  2. rabbitmq 不同的消费者消费同一个队列_消息队列王者--rabbitMQ深入理解--工作过程、消费模式、持久化等...

    概述 之前已经对rabbitMQ的一些基本概念做了介绍和不同MQ之间的比较,今天主要对rabbitMQ的一些方面做扩展. 01 消息队列 Broker:简单来说就是消息队列服务器实体. Exchang ...

  3. java 如何判定消息已在队列_【05期】消息队列中,如何保证消息的顺序性?

    本文选自:advanced-java 作者:yanglbme 问:如何保证消息的顺序性? 面试官心理分析 其实这个也是用 MQ 的时候必问的话题,第一看看你了不了解顺序这个事儿?第二看看你有没有办法保 ...

  4. videojs如何获取请求消息_消息队列中,如何保证消息的顺序性?

    点击?蓝色" 深入原理",关注并"设为星标" 技术干货,第一时间推送 消息无序产生的原因 消息队列,既然是队列就能保证消息在进入队列,以及出队列的时候保证消息的 ...

  5. Spring Cloud Stream与RabbitMQ 生产者和消费者位于同一个应用服务

    第一种模型:交换机类型为topic,路由key为"#",这是简单的使用模型 当前Spring Cloud Rabbit的版本为2.1.2 <dependency>< ...

  6. 请教!rabbitMQ怎么确认同一个队列所有消费者收到消息?

    求大神指导~  查看了很多能查到的文档都没有找到明确说明的,rabbit的发布订阅和ActiveMq 的发布订阅有所区别,我之前一直用 ActiveMq 的   后来公司要求改为rabbitMQ,请问 ...

  7. rabbitmq多个消费者监听一个队列_RabbitMQ的六种工作模式

    一.基于erlang语言:是一种支持高并发的语言 RabbitMQ的六种工作模式: 1.1 simple简单模式 消息产生着§将消息放入队列 消息的消费者(consumer) 监听(while) 消息 ...

  8. 消息中间件--RabbitMQ ---高级特性之消费端ACK与重回队列

    什么是消费端的ACK和重回队列? 消费端的手工ACK和NACK 消费端进行消费的时候,如果由于业务异常我们可以进行日志的记录,然后进行补偿 如果由于服务器宕机等严重问题,那我们就需要手工进行ACK保障 ...

  9. Kafka多个消费者监听消费同一个Topic主题

    多个消费者监听消费同一个Topic主题 一.需求介绍 二.@kafkaListener注解 三.代码实现 3.1 第一个消费者 3.2 第二个消费者 3.3 生产者 四.测试 一.需求介绍 有一个To ...

最新文章

  1. js正则验证特殊字符
  2. 简单的无监督词统计nlp预测模型
  3. Tautology--POJ 3295
  4. mac SecureCRT设置
  5. Python批量Excel文件数据导入SQLite数据库的优化方案
  6. The idea of ​​router network configuration
  7. 【SPOJ1297】Palindrome (SA+RMQ)
  8. Atitit. 软件GUI按钮与仪表盘--web服务器区--获取apache配置文件路径 linux and apache的启动、停止、重启
  9. 在线直播系统源码,进入新的界面后自动刷新内容
  10. 高速PCB设计注意事项
  11. Problem C: 车牌限行
  12. “做我女朋友好吗?”vbs源码
  13. 正方形数目 cmp 栈
  14. 《畅玩NAS》第8章 ZeroTier组建局域网
  15. configure: error: Package requirements (libwebp) were not met:
  16. RBAC权限框架_MVC权限框架
  17. C语言基础入门——打印“hello word“
  18. 1 什么是末端柔顺控制?
  19. 大多数日志文件的后缀名是_log4j(添加日志)
  20. 简介IntelliJ IDEAD

热门文章

  1. 作为一个精神病人是一种怎样的体验?
  2. Typora保存图片,上传图片,分享图片,图片丢失
  3. 解决关于VS2019输入会顶掉后面字符的问题
  4. C++实现类似QT中的计时器QTime类(CQTime)
  5. 真知灼见|客户视图与工作台:金融行业呼叫中心领域驱动设计
  6. 好玩的ES--第三篇之过滤查询,整合SpringBoot
  7. 微信开始屏蔽拼多多小红书快手外链访问
  8. Nuxt配置百度统计,并公开统计解决
  9. 如何在 R 中计算条件概率
  10. matlab将彩图转化成灰度图,matlab 如何将彩图转成灰度图