📅  最后修改于: 2023-12-03 15:12:22.633000             🧑  作者: Mango
RabbitMQ 是一个流行的开源消息代理,它支持多种协议,其中包括 HTTP API。通过 HTTP API,您可以在 RabbitMQ 中发送消息而不需要专门编写客户端代码。
本篇文章将介绍如何使用 RabbitMQ 的 HTTP API 来发送持久消息。
在使用 RabbitMQ 的 HTTP API 发送消息之前,您需要完成以下步骤:
要发送持久消息,您需要使用 HTTP POST 请求发送消息。请求必须携带以下信息:
示例代码如下:
POST /api/exchanges/{vhost}/{exchange}/publish HTTP/1.1
Host: <rabbitmq-host>:<rabbitmq-port>
Authorization: Basic <base64-encoded-credentials>
Content-Type: application/json
{
"properties": {
"delivery_mode": 2
},
"routing_key": "<routing-key>",
"payload": "<payload>",
"payload_encoding": "string"
}
{vhost}
: 消息要发送到的 virtual host 的名称{exchange}
: 交换机的名称<base64-encoded-credentials>
: Base64 编码的用户名和密码组成的字符串<routing-key>
: 消息要发送到的队列的路由键<payload>
: 消息的内容delivery_mode
: 设置为 2 表示此消息是持久化的,即使 RabbitMQ 重启后消息也不会丢失payload_encoding
: 消息内容的编码方式,默认为 string
以下是一份 Python 示例代码,使用 requests
库发送 POST 请求:
import requests
import json
payload = { 'some-key': 'some-value' }
headers = { 'content-type': 'application/json' }
auth = ('guest', 'guest') # 这里的用户名和密码是 RabbitMQ 的默认用户名和密码
url = 'http://<rabbitmq-host>:<rabbitmq-port>/api/exchanges/{vhost}/{exchange}/publish'.format(vhost='%2F',exchange='my-exchange') # 这里的 /%2F 表示根 virtual host
data = {
'properties': {
'delivery_mode': 2
},
'routing_key': 'my-queue',
'payload': json.dumps(payload),
'payload_encoding': 'string'
}
response = requests.post(url, headers=headers, data=json.dumps(data), auth=auth)
if response.status_code == 200:
print('Message sent successfully')
else:
print('Failed to send message')
此代码以一个 JSON 对象作为消息内容,将其发送到了 my-exchange
的 my-queue
队列。
本篇文章介绍了如何使用 RabbitMQ 的 HTTP API 发送持久消息。使用 HTTP API 发送消息可以方便地跨平台和编程语言进行消息传递。当您需要在不同系统和编程语言之间实现消息传递时,HTTP API 是一种非常好的选择。