有一种业务场景,当人员组织结构变更时,会有大量数据进行推送。这些数据类型有的是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上的队列不一致。把原来队列删除了即可。
完结撒花★,°:.☆( ̄▽ ̄)/$:.°★ 。
版权归原作者 爱刘温柔的小猪 所有, 如有侵权,请联系我们删除。