0


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

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

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

这时就会用到消费者单活模式,也就是如下图管理页面中所显示。
在这里插入图片描述
使用起来很简单,只是在声明队列的时候的参数(arguments参数),将x-single-active-consumer设置为True即可。

代码如下:

HashMap<String,Object> args =newHashMap<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://blog.csdn.net/qq_42969135/article/details/128133898
版权归原作者 爱刘温柔的小猪 所有, 如有侵权,请联系我们删除。

“RabbitMQ多消费者实例时,保证只有一个消费者进行消费(单活消费者模式)”的评论:

还没有评论