我尝试使用RabbitMQ HTTP REST客户端将消息发布到队列中。我正在使用以下URL和请求
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"}
我只有一个header set:
Content-Type:application/json
我想把
"payload_encoding":"base64",
但没有用我是新来的兔子任何回应都是受欢迎的。
5条答案
按热度按时间bt1cpqcv1#
试试用
xjreopfe2#
工作示例。我们需要simple来转义双引号。重要的是冒号在引号之外,因为这会导致无法解释的错误。
d6kp6zgx3#
我设法使用下划线“_”而不是破折号发送content-type。
有关有效属性的列表,请参见此处。参见RabbitMQ Management HTTP API以获得一些示例。
使用curl向rabbit exchange发布json消息:
content_type使用下划线编写,routing_key为空,用于将消息发送到exchange,而不是特定队列。
qij5mzcb4#
要使用JSON格式的payload,您必须使用base64对其进行编码并使用
"payload_encoding": "base64"
属性。798qvoo85#
一种解决方案是将
payload_encoding
设置为base64
。虽然上面已经回答了这个问题,但下面是一个完整的curl
示例:上面的渲染与shell变量展开:
结果: