无法使用 HTTP API 将消息发布到 RabbitMQ 中的队列

Nit*_*tal 1 rest rabbitmq

我正在使用 REST APIhttp://192.168.99.100:32787/api/exchanges/%2f/amq.direct/publish 将消息发布到我的helloworld.q队列。

有效负载:

{"properties":{},"routing_key":"","payload":"Hello World","payload_encoding":"string"}
Run Code Online (Sandbox Code Playgroud)

我还没有创建任何新的交换。我不确定要指定哪个交换,因此amq.direct在其余网址中使用。我已经提供了基本身份验证凭据,并且从 API 收到了以下响应。

{
    "routed": false
}
Run Code Online (Sandbox Code Playgroud)

不知道出了什么问题。

有关如何使用其 HTTP API 的最新文档可以在此处找到。 https://rawcdn.githack.com/rabbitmq/rabbitmq-management/rabbitmq_v3_6_11/priv/www/api/index.html

Nic*_*las 5

您有两种方法可以实现这一目标:

  • 要么使用默认交换并将队列名称指定为路由键(否则 RabbitMQ 不知道您希望消息进入哪个队列):

    POST /api/exchanges/%2f//publish HTTP/1.1 {"properties":{},"routing_key":"helloworld.q","payload":"Hello World","payload_encoding":"string"}

  • 或者您显式地将其发送到amq.direct交换,但随后您必须在发布消息之前helloworld.q创建绑定。amq.direct您发布的消息的路由键也必须与您在绑定上指定的路由键匹配。