java - 如何在不使消息出队的情况下浏览rabbitmq中的队列

标签 java rabbitmq message-queue

我正在尝试获取具有特定相关 ID 的消息,如 rabbitmq 文档中所述。但是我看到不相关的消息被取消了。我不希望它发生。在收到消息并知道这不是我要找的消息后,如何告诉 rabbitmq 不要出队。请帮助我。

`

.
.
replyQueueName = channel.queueDeclare().getQueue();
consumer = new QueueingConsumer(channel);
channel.basicConsume(replyQueueName, false, consumer);
while (true) {
            QueueingConsumer.Delivery delivery = consumer.nextDelivery();
            System.out.println(delivery.getProperties().getCorrelationId());
            if (delivery.getProperties().getCorrelationId().equals(corrId)) {
                response = new String(delivery.getBody());
                break;
            }
        }

`

最佳答案

你不能随心所欲地做你想做的事。 “选择性消费者”是 RabbitMQ 中的一种反模式。

相反,您应该设计您的 RabbitMQ 设置,以便将您的消息路由到只包含目标消费者消息的队列。

我在这里写了更多相关内容:http://derickbailey.com/2015/07/22/airport-baggage-claims-selective-consumers-and-rabbitmq-anti-patterns/

关于java - 如何在不使消息出队的情况下浏览rabbitmq中的队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35323350/

相关文章:

java - Spring 中 'Sort exceeded memory limit' MongoDb 的问题

java - 具有持久性的 HTTP POST 请求的非阻塞队列

django - 在Django-Celery中停止/清除定期任务

Docker中的RabbitMQ - 用户创建不持久

java - 从 Java 代码向 IBM MQ 放入和获取消息

c++ - 在多核盒子上使用忙循环应用程序

java - FAIL - 上下文路径/hsx 中的应用程序无法启动

java - hibernate :级联类型

java - log4j 初始化问题

ubuntu - 如何安装rabbitmq管理插件(rabbitmq-plugins)