RabbitMQ 关闭、开启消费

默认情况下,消费者在项目启动的时候就开始监听队列消费了,在某些特殊情况,可能需要临时关闭消费

java 复制代码
    @Autowired
    private RabbitTemplate rabbitTemplate;
    
    /**
     * 发送消息
     *
     * @author 蔡定努
     */
    @GetMapping
    public boolean aa() {
         rabbitTemplate.convertSendAndReceive("name", "123");
        return true;
    }

    /**
     * 消息监听
     */
    @RabbitListener(id = "con", bindings = @QueueBinding(
            value = @Queue(name = "name"),
            exchange = @Exchange("ex"),
            key = "ex"),
            concurrency = "3", ackMode = "AUTO"
    )
    public void ack(String name con() throws InterruptedException {
        log.info("---收到消息-----");
        sleep(10000);
    }


    @Autowired
    private RabbitListenerEndpointRegistry rabbitListenerEndpointRegistry;

    /**
     * 开启/关闭单个消费者
     */
    @GetMapping("switchConsumer/{queueId}/{flag}")
    public void switchConsumer(@PathVariable("queueId") String queueId, @PathVariable(value = "flag") Boolean flag) {
       // Collection<MessageListenerContainer> listenerContainers = rabbitListenerEndpointRegistry.getListenerContainers();
       //  for (MessageListenerContainer listenerContainer : listenerContainers) {
       //      listenerContainer.stop();
       //  }
       //

        MessageListenerContainer listenerContainer = rabbitListenerEndpointRegistry.getListenerContainer(queueId);
        Optional.ofNullable(listenerContainer).ifPresent(messageListenerContainer -> {
            if (flag) {
                messageListenerContainer.start();
                log.info("消费者开启");
            } else {
                messageListenerContainer.stop();
                log.info("消费者关闭");
            }
        });
    }
相关推荐
CodeWithMe3 小时前
【Note】《Kafka: The Definitive Guide》 第8章: Cross-Cluster Data Mirroring
分布式·kafka
Alaia.4 小时前
【kafka 3.9.1】单机版集群部署并配置kafka的SASL认证
分布式·kafka
勤奋的知更鸟5 小时前
Kettle + 大数据实战:从数据采集到分布式处理的完整流程指南
大数据·分布式
Kookoos6 小时前
ABP VNext + Cosmos DB Change Feed:搭建实时数据变更流服务
数据库·分布式·后端·abp vnext·azure cosmos
掘金-我是哪吒19 小时前
分布式微服务系统架构第156集:JavaPlus技术文档平台日更-Java线程池使用指南
java·分布式·微服务·云原生·架构
亲爱的非洲野猪19 小时前
Kafka消息积压的多维度解决方案:超越简单扩容的完整策略
java·分布式·中间件·kafka
活跃家族19 小时前
分布式压测
分布式
前端世界21 小时前
HarmonyOS开发实战:鸿蒙分布式生态构建与多设备协同发布全流程详解
分布式·华为·harmonyos
DavidSoCool21 小时前
RabbitMQ使用topic Exchange实现微服务分组订阅
分布式·微服务·rabbitmq