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("消费者关闭");
            }
        });
    }
相关推荐
六bring个六1 小时前
分布式软总线认证模块架构与实现分析
分布式·架构·open harmony
脱胎换骨-军哥18 小时前
C++分布式系统设计:从通信引擎到分布式共识
开发语言·c++·分布式
海棠Flower未眠21 小时前
SpringBoot 整合 Kafka 高性能消息队列(荣耀典藏版)
分布式·kafka
贺国亚1 天前
模型训练-分布式与GPU调度
分布式·wpf
大模型码小白1 天前
Milvus 架构设计:从向量索引到分布式检索,AI 原生存储引擎的内部机制
java·大数据·人工智能·分布式·深度学习·milvus
liulilittle2 天前
论分布式系统的半开闭问题
服务器·网络·分布式·系统架构·竞态
豆瓣鸡2 天前
XXL-JOB 定时任务——从 Docker 部署到分片广播,分布式任务调度落地
spring boot·分布式·docker·定时任务
liulilittle2 天前
论双机热备:分布式
服务器·网络·分布式·通信·竞态
liulilittle2 天前
论无知:分布式
服务器·网络·分布式·并发·通信·竞态
脱胎换骨-军哥2 天前
C++ 与 Go 生成质量比拼,谁是分布式主力语言
c++·分布式·golang