首页 > 解决方案 > 在 RabbitMQ 中按属性或标头获取消息

问题描述

我是 RabbitMQ 的新手,我遇到了一个问题。我正在尝试通过 API 方法从队列中获取消息。我已经做到了,如果可能的话,我想通过标题或属性从队列中获取消息。我阅读了有关 HTTP API 的文档。我还没有找到这样的 API 来按某些标头或属性过滤消息。

我使用这种 API 从队列中获取消息:

/api/queues/vhost/name/get

在体内:

{"count":20,"ackmode":"ack_requeue_true","encoding":"auto"}

我在想,也许有可能以某种方式在正文中传递一些过滤器,以便它可以过滤并返回我想要的消息。

这就是我的消息的样子: 在此处输入图像描述

我试图通过身体type = "myType"header = "myHeader"

标签: rabbitmqmessage-queuemessaging

解决方案


我已经做到了,如果可能的话,我想通过标题或属性从队列中获取消息。

RabbitMQ 仅从队列中按顺序传递消息。一旦消息在队列中,就无法过滤。

但是,您可以在消息发布到交换器时对其进行过滤。使用基于标头值的标头交换和绑定队列。然后,每个队列将包含您期望的消息,然后您可以从中消费。

RabbitMQ 教程有一个使用“标头交换”的部分。以此为指导。

最后,仅使用 HTTP API 进行测试。这是检索消息的一种非常低效的方式。


注意: RabbitMQ 团队会监控rabbitmq-users 邮件列表,有时只会在 StackOverflow 上回答问题。


推荐阅读