queue - 如何停止使用来自选择性队列的消息 - RabbitMQ

标签 queue rabbitmq consumer

QueueingConsumer consumer = new QueueingConsumer(channel);
System.out.println(consumer.getConsumerTag());
channel.basicConsume("queue1", consumer);
channel.basicConsume("queue3", consumer);

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

最佳答案

是的,你可以,使用 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

我希望它有用。

关于queue - 如何停止使用来自选择性队列的消息 - RabbitMQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23333863/

相关文章:

.net - .NET 中队列 <T> 的大小限制?

c# - 在数组中的某个位置查找数字,根据某些规则,将复数添加到 "numbers"

redis - 在 Kubernetes 上运行 Kafka 是一种好方法吗?

Python 对象中的多处理

java - 从 Kafka Streams 重置消费者偏移量到开头

reactjs - 如何更新使用两个上下文使用者的组件的状态

iPhone 多线程 : List/Queue

c++ - 将 std::deque 的现有元素推到前面?

java - 无法在 LAN 上的两台 PC 之间创建连接(Windows、RabbitMQ)

.NET 中的 RabbitMQ 订阅者通知