【问题标题】:How to stop consuming message from selective queue - RabbitMQ如何停止使用选择性队列中的消息 - RabbitMQ
【发布时间】:2014-06-13 13:45:09
【问题描述】:
QueueingConsumer consumer = new QueueingConsumer(channel);
System.out.println(consumer.getConsumerTag());
channel.basicConsume("queue1", consumer);
channel.basicConsume("queue3", consumer);

是否可以动态停止单独使用队列“queue3”中的消息?

【问题讨论】:

    标签: queue rabbitmq consumer


    【解决方案1】:

    是的,你可以,使用channel.basicCancel(consumerTag); 编辑 例如:

    String tag3 = channel.basicConsume("queue3", consumer);
    channel.basicCancel(tag3)
    

    您可以在此处找到 5 秒后取消订阅消费者的代码:

    String tag1 = channel.basicConsume(myQueue, autoAck, consumer);
    String tag2 = channel.basicConsume(myQueue2, autoAck, consumer);
        executorService.execute(new Runnable() {
            @Override
            public void run() {
                while (true) {
                    Delivery delivery;
                    try {
                        delivery = consumer.nextDelivery();
                        String message = new String(delivery.getBody());
                        System.out.println("Received: " + message);
                    } catch (Exception ex) {
                        Logger.getLogger(TestMng.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }
            }
        });
        System.out.println("Consumers Ready");
        try {
            Thread.sleep(5000);
        } catch (InterruptedException ex) {
            Logger.getLogger(TestMng.class.getName()).log(Level.SEVERE, null, ex);
        }
    
        channel.basicCancel(tag2); /// here you remove only the Myqueue2
    

    希望对你有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-26
      • 2013-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-03
      • 2014-05-25
      相关资源
      最近更新 更多