浏览文档(https://cdn.rawgit.com/rabbitmq/rabbitmq-management/v3.7.9/priv/www/api/index.html)
没有找到一种方法来发布一个消息到一个 * 队列 *(不是一个交换,一个队列)与HTTP API?
这可能吗?
尽管它在生产思维中可能没有什么意义,但它仍然可以用于测试目的。
我基本上想模仿RabbitMQ管理控制台中可用的“发布消息”界面。
这可能吗?
浏览文档(https://cdn.rawgit.com/rabbitmq/rabbitmq-management/v3.7.9/priv/www/api/index.html)
没有找到一种方法来发布一个消息到一个 * 队列 *(不是一个交换,一个队列)与HTTP API?
这可能吗?
尽管它在生产思维中可能没有什么意义,但它仍然可以用于测试目的。
我基本上想模仿RabbitMQ管理控制台中可用的“发布消息”界面。
这可能吗?
5条答案
按热度按时间pu82cl6c1#
注意:您的问题已经回答here:link
RabbitMQ只支持发布到交易所。这是产品的核心功能。然后,RabbitMQ使用绑定来确定哪个队列应该接收消息。
您可以阅读这些概念here。
当您在管理控制台中使用“发布消息”时,它使用默认绑定和默认交换。this document:
默认交换
在本教程的前几部分中,我们对交换一无所知,但仍然能够向队列发送消息。这是可能的,因为我们使用的是默认的交换,我们用空字符串(“”)来标识它。
回想一下我们之前是如何发布消息的:
exchange参数是exchange的名称。空字符串表示默认或无名交换:消息被路由到具有routing_key指定名称的队列(如果存在)。
因此,为了“看起来”直接发布到队列,管理接口使用队列名称作为路由关键字将消息发布到默认交换(命名为
amq.default
或空字符串""
)。您可以通过在浏览器中启用开发人员工具并在向队列发布消息时观察对/api/exchanges/vhost/name/publish
的HTTP调用来亲眼看到这一点。在您的示例中,请求看起来像这样(使用Chrome,右键单击
publish
请求并“copy as cUrl”):**注意:**RabbitMQ团队监控
rabbitmq-users
邮件列表,仅在StackOverflow上偶尔回答问题。epfja78i2#
对于那些对Intellij IDEA HTTP客户端语法有兴趣的人
zxlwwiss3#
我知道这篇文章很旧了,但也许还能找到。这里有一个第三方工具,可以帮助在这种情况下,当你需要发布一个消息直接到队列:
https://github.com/bkrieger1991/rabbitcli
s3fp2yjn4#
你说得对。我为这个错误道歉。当使用RabbitMQ HTTP API和Postman时,密码不应该是base64编码的。相反,您应该使用Postman中的基本身份验证功能来发送凭据。
以下是在Postman中包含身份验证的更正步骤:
1.打开Postman并创建新请求。
1.将请求方法设置为
POST
。http://localhost:15672/api/exchanges/{virtual-host}/{exchange-name}/publish
。{virtual-host}
替换为虚拟主机的名称。默认虚拟主机为/
。{exchange-name}
替换为您的交易所名称。Content-Type
,值:application/json
raw
选项,然后从下拉列表中选择JSON
。{queue-name}
替换为您的队列名称。我再次为我之前回复中的错误信息造成的混乱道歉。在Postman中使用基本身份验证是在使用RabbitMQ HTTP API时发送凭据的适当方法。
wh6knrhe5#