我正在尝试使用RabbitMQ HTTP REST客户端将消息发布到队列中。我正在使用以下网址和请求
http://xxxx/api/exchanges/xxxx/exc.notif/publish
{
"routing_key":"routing.key",
"payload":{
},
"payload_encoding":"string",
"properties":{
"headers":{
"notif_d":"TEST",
"notif_k": ["example1", "example2"],
"userModTime":"timestamp"
}
}
}
从兔子身上得到以下回应:
{"error":"bad_request","reason":"payload_not_string"}
我只有一个标题集:
Content-Type:application/json
我试图设置
"payload_encoding":"base64",
但它没有帮助。我是兔子新手,欢迎任何回复。
试试吧
{
"properties": {
"content-type": "application/json"
},
"routing_key": "testKey",
"payload": "1234",
"payload_encoding": "string"
}
工作实例。我们需要简单的逃避双引号。
{
"properties": {},
"routing_key": "q_testing",
"payload": "{
\"message\": \"message from terminal\"
}",
"payload_encoding": "string"
}
我设法使用下划线“_”而不是破折号发送内容类型。
有关有效属性的列表,请参阅here。有关示例,请参阅RabbitMQ Management HTTP API。
要使用curl将一个json消息发布到rabbitmq exchange:
curl -i -u guest:guest -XPOST --data '{"properties":\
{"content_type":"application/json"}, \
"routing_key":"", \
"payload":"{\"foo\":\"bar\"}",\
"payload_encoding":"string"}' \
"http://localhost:15672/api/exchanges/%2f/exchange_name/publish"
content_type是使用下划线写的,routing_key是空的,用来发送消息到交换,而不是特定的队列。