有一种业务场景,当人员组织结构变更时,会有大量数据进行推送。这些数据类型有的是add,有的是update,并且必须先add,才能进行update。
这时,为了保证消费顺序,需要只有一个实例进行按顺序消费,其他实例仅提供日常对外服务,不进行消息消费。当唯一消费实例无法消费或掉线时,会自动开启下一个消费者进行消费,保证多个实例消费者中仅有一个正常消费,其他作为备选。
这时就会用到消费者单活模式,也就是如下图管理页面中所显示。
使用起来很简单,只是在声明队列的时候的参数(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
完结撒花★,°:.☆( ̄▽ ̄)/$:.°★ 。文章来源地址https://www.toymoban.com/news/detail-506280.html
到了这里,关于RabbitMQ多消费者实例时,保证只有一个消费者进行消费(单活消费者模式)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!