RabbitMQ多消费者实例时,保证只有一个消费者进行消费(单活消费者模式)

这篇具有很好参考价值的文章主要介绍了RabbitMQ多消费者实例时,保证只有一个消费者进行消费(单活消费者模式)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

有一种业务场景,当人员组织结构变更时,会有大量数据进行推送。这些数据类型有的是add,有的是update,并且必须先add,才能进行update。

这时,为了保证消费顺序,需要只有一个实例进行按顺序消费,其他实例仅提供日常对外服务,不进行消息消费。当唯一消费实例无法消费或掉线时,会自动开启下一个消费者进行消费,保证多个实例消费者中仅有一个正常消费,其他作为备选。

这时就会用到消费者单活模式,也就是如下图管理页面中所显示。
RabbitMQ多消费者实例时,保证只有一个消费者进行消费(单活消费者模式)
使用起来很简单,只是在声明队列的时候的参数(arguments参数),将x-single-active-consumer设置为True即可。

代码如下:

HashMap<String,Object> args = new HashMap<String,Object>();
args.put("x-single-active-consumer", true);	
......
//创建Queue
channel.queueDeclare(queueName, true, false, false, args);

将x-single-active-consumer设置为True,则这个队列只允许存在一个有效的消费者消费消息,其他消费者处于备选状态。

注意:如果一个队列已经创建为非x-single-active-consumer,而你想更改其为x-single-active-consumer,上面的代码是会报错的,错误信息是:声明的队列的和server上的队列不一致。把原来队列删除了即可。

完结撒花★,°:.☆( ̄▽ ̄)/$:.°★文章来源地址https://www.toymoban.com/news/detail-506280.html

到了这里,关于RabbitMQ多消费者实例时,保证只有一个消费者进行消费(单活消费者模式)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Kafka-消费者-传递保证语义(Delivery guarantee semantic)

    Kafka服务端并不会记录消费者的消费位置,而是由消费者自己决定如何保存如何记录其消费的offset。 在Kafka服务端中添加了一个名为“__consumer_offsets”的内部Topic,为了便于描述简称“Offsets Topic”。 Offsets Topic可以用来保存消费者提交的offset,当出现消费者上/下线时会触发Consu

    2024年01月19日
    浏览(48)
  • RabbitMQ 消费者

      RabbitMQ的消费模式分两种:推模式和拉模式,推模式采用Basic.Consume进行消费,拉模式则是调用Basic.Get进行消费。   消费者通过订阅队列从RabbitMQ中获取消息进行消费,为避免消息丢失可采用消费确认机制   顾名思义,拉模式就是消费者主动的从RabbitMQ中获取数据,通

    2024年02月11日
    浏览(28)
  • RabbitMQ-消费者确认机制

    none:不做任何处理,消息投递到消费者了之后,立即返回ACK,并且从MQ将消息删除,非常不安全,不建议使用。 manual:手动模式,需要在业务中调用api,ack或者reject。 auto:自动模式,SpringAMQP利用AOP对我们的消息处理做了环绕增强,当业务正常执行时返回ACK,执行异常时,根

    2024年01月21日
    浏览(43)
  • RabbitMq同一队列多个消费者问题

    RabbitMQ只有Queue,如果多个消费者绑定同一个queue,那么一条消息,只能被其中一个消费者取走(轮询)。 本质上,RabbitMq的消费者的消息确认机制,就注定不可能让多个消费者同时去消费同一个队列中的同一条消息,只能轮询的方式去消费。 我感觉我们的目的是想用rabbitmq

    2024年02月04日
    浏览(23)
  • RabbitMQ消费者的可靠性

    目录 一、消费者确认 二、失败重试机制 2.1、失败处理策略 三、业务幂等性 3.1、唯一消息ID  3.2、业务判断 3.3、兜底方案 一、消费者确认 RabbitMQ提供了消费者确认机制( Consumer Acknowledgement )。即:当消费者处理消息结束后,应该向RabbitMQ发送一个回执,告知RabbitMQ自己消息

    2024年02月07日
    浏览(31)
  • rabbitmq消费者与生产者

    在第一次学习rabbitmq的时候,遇到了许多不懂得 第一步导包 第二步新增生产者 在这里中: connectionFactory.setVirtualHost(\\\"my_vhost\\\");//填写自己的队列名称,如果你的为”/“则填写\\\'\\\'/\\\'\\\' 第三步新增消费者 消息获取成功 注意如果你用的云服务器需要打开这两个端口 5672 15672 如果你使

    2024年02月11日
    浏览(32)
  • kafka复习:(22)一个分区只能被消费者组中的一个消费者消费吗?

    默认情况下,一个分区只能被消费者组中的一个消费者消费。但可以自定义PartitionAssignor来打破这个限制。 一、自定义PartitionAssignor. 二、定义两个消费者,给其配置上述PartitionAssignor. 在kafka创建只有一个分区的topic : study2023 创建一个生产者往study2023这个 topic发送消息: 分别

    2024年02月10日
    浏览(24)
  • rabbitmq 消费者报错 ListenerExecutionFailedException NullPointerException

    报错信息: org.springframework.amqp.rabbit.support.ListenerExecutionFailedException: Listener method \\\'private void com.xxx.service.impl.xxxServiceImpl.xxx(com.xxx.dto.XXX)\\\' threw exception     at org.springframework.amqp.rabbit.listener.adapter.MessagingMessageListenerAdapter.invokeHandler(MessagingMessageListenerAdapter.java:230)     at org.sprin

    2024年02月07日
    浏览(27)
  • RabbitMQ原理(五):消费者的可靠性

    当RabbitMQ向消费者投递消息以后,需要知道消费者的处理状态如何。因为消息投递给消费者并不代表就一定被正确消费了,可能出现的故障有很多,比如: 消息投递的过程中出现了网络故障 消费者接收到消息后突然宕机 消费者接收到消息后,因处理不当导致异常 … 一旦发生

    2024年02月08日
    浏览(27)
  • kafka-consumer-消费者代码实例

    目录 1 消费一个主题 2 消费一个分区 3 消费者组案例 消费topic为first的消息。 应用场景:当生产者将所有消息发往特定的某个主题分区。 消费first主题0号分区代码: 测试同一个主题的分区数据,只能由一个消费者组中的一个消费者进行消费。 创建三个消费者对某一分区进行

    2024年02月11日
    浏览(23)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包