我是靠谱客的博主 开放花卷,最近开发中收集的这篇文章主要介绍xxl-job如何去控制rabbitmq消费者的消费?1.开启消费者的能力开关2.暂停消费者的消费能力,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
领导安排指定xxl-job去控制消费者的消费,通过百度知道rabibtmq中注解autoStartup是可以控制消费者去消费的,默认是true,如果是false,队列可以接受数据,但是不消费,根据这个注解,我在xxl-job中配置一个开关
1.开启消费者的能力开关
同时将消费者中注解的 autoStartup属性置为rabbitmqFlag
@RabbitListener(queues = {"${spring.rabbitmq.queue}"}, concurrency = "1", autoStartup= "rabbitmqFlag")
此时已经配置完成了,但是@RabbitListener注解其实底层就是用RabbitListenerEndpointRegistry,可以自行百度了解,通过方法.start()就会开启队列,这样就可以正常跑任务了
2.暂停消费者的消费能力
private void closeQueue(String queueName){ //消费者关闭 rabbitmqFlag = false; //关闭消费者 stop(queueName); } /** * 判断监听器是否监听了指定的队列。 * @param queueName 队列名称 * @param listenerContainer 监听容器 * @return true-监听,false-未监听。 */ private boolean isQueueListener(String queueName, MessageListenerContainer listenerContainer) { if (listenerContainer instanceof AbstractMessageListenerContainer) { AbstractMessageListenerContainer abstractMessageListenerContainer = (AbstractMessageListenerContainer) listenerContainer; String[] queueNames = abstractMessageListenerContainer.getQueueNames(); return ArrayUtils.contains(queueNames, queueName); } return false; } /** * 停止指定队列() * @param queueName 队列名称 * @return true-监听,false-未监听。 */ public boolean stop(String queueName) { Collection<MessageListenerContainer> listenerContainers = registry.getListenerContainers(); for (MessageListenerContainer listenerContainer : listenerContainers) { if (this.isQueueListener(queueName, listenerContainer)) { listenerContainer.stop(); return true; } } return false; }
ok完美解决了
最后
以上就是开放花卷为你收集整理的xxl-job如何去控制rabbitmq消费者的消费?1.开启消费者的能力开关2.暂停消费者的消费能力的全部内容,希望文章能够帮你解决xxl-job如何去控制rabbitmq消费者的消费?1.开启消费者的能力开关2.暂停消费者的消费能力所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复