0


rabbitmq多个消费者消费同一个队列中的同一条消息。

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

文章目录


前言

使用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相关配置

@ConfigurationpublicclassRabbitmqConfig{@BeanpublicQueuequeue1(){returnnewQueue("queue1",true);}@BeanpublicFanoutExchangeexchange1(){returnnewFanoutExchange("exchange1",true,false);}@BeanpublicBindingbinding1(){returnBindingBuilder.bind(queue1()).to(exchange1());}}

注:因为是fanout广播模式,所以不用配置路由键。

3.生产者代码

代码如下(示例):

@ResourceprivateRabbitTemplate rabbitTemplate;@TestpublicvoidpushMessage(){HashMap<Object,Object> hashMap =newHashMap<>();
    hashMap.put("name","zhangsan");
    hashMap.put("age","18");
    rabbitTemplate.convertAndSend("exchange1","", hashMap);}

4.多个消费者,消费同一条数据。

消费者1号:
代码如下(示例):

@ComponentpublicclassRabbitMqConsumer{//    @RabbitListener(queues = "queue1")@RabbitListener(bindings =@QueueBinding(// value = @Queue(value = "queue1"),
        value =@Queue(),//切记: 此处无需设置队列名称,否在得话,多个消费者只有一个消费者能消费数据。其它消费者无法消费数据。
        exchange =@Exchange(value ="exchange1",type =ExchangeTypes.FANOUT)))publicvoidgetData(Message message){try{String str =newString(message.getBody(),"utf-8");System.out.println(str);}catch(Exception e){
            e.printStackTrace();}}}

消费者2号:
代码如下(示例):

@ComponentpublicclassRabbitMqConsumer{// @RabbitListener(queues = "queue1")@RabbitListener(bindings =@QueueBinding(// value = @Queue(value = "queue1"),
        value =@Queue(),//切记: 此处无需设置队列名称,否在得话,多个消费者只有一个消费者能消费数据。其它消费者无法消费数据。
        exchange =@Exchange(value ="exchange1",type =ExchangeTypes.FANOUT)))publicvoidgetData(Message message){try{String str =newString(message.getBody(),"utf-8");System.out.println(str);}catch(Exception e){
            e.printStackTrace();}}}

结束,希望能够帮助各位。


总结

人生物语:活得优雅些。也许你的生活并不富裕;也许你的工作不够好;也许你正处在困境中;也许你被情所弃。不论什么原因,请你在出门时,一定要让自己面带微笑,从容自若地去面对生活。只要你自己真正撑起来了,别人无论如何是压不垮你的。

标签: rabbitmq java 分布式

本文转载自: https://blog.csdn.net/weixin_45982841/article/details/125334311
版权归原作者 凉忆- 所有, 如有侵权,请联系我们删除。

“rabbitmq多个消费者消费同一个队列中的同一条消息。”的评论:

还没有评论