我是靠谱客的博主 开放花卷,这篇文章主要介绍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消费者内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部