我是靠谱客的博主 开放花卷,最近开发中收集的这篇文章主要介绍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.暂停消费者的消费能力所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部