我有几个Java客户端使用RabbitMQ默认交换将消息发送到队列。
我希望能够分析队列内部的消息(如果它们没有明显消耗),识别消息的发送者以及客户端是否发送了太多消息然后绑定一个特殊队列以便此客户端发送消息到该队列。
我是RabbitMQ的新手,所以我想知道的是:
是否可以在RabbitMQ中附加客户端ID作为标题?
如何为工作量大的客户端创建特殊队列?
是否可以分析驻留在队列中的邮件?
非常感谢任何帮助。
答案 0 :(得分:1)
是否可以在RabbitMQ中附加客户端ID作为标题?
您可以使用BasicProperties
Map<String, Object> headers = new HashMap<String, Object>();
headers.put("myclientid", 22222);
channel.basicPublish(exchangeName, routingKey,
new AMQP.BasicProperties.Builder()
.headers(headers)
.build()),
messageBodyBytes);
如何为工作负载较多的客户端创建特殊队列?
没有“特殊”队列,如果您的工作负载很高,可以将更多的使用者添加到同一队列中。看到 https://www.rabbitmq.com/tutorials/tutorial-two-java.html
是否可以分析驻留在队列中的消息?
您可以使用API basic_get
而无需确认消息,这样您就可以在不将其从队列中删除的情况下阅读消息