RabbitMQ REST HTTP JSON有效负载

时间:2017-07-04 11:45:05

标签: json rest rabbitmq

我正在尝试使用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",

但它没有帮助。我是兔子新手,欢迎任何回复。

4 个答案:

答案 0 :(得分:2)

尝试

{
"properties": {
"content-type": "application/json"
},
"routing_key": "testKey",
"payload": "1234",
"payload_encoding": "string"
}

答案 1 :(得分:0)

工作示例。我们需要简单的转义双引号。

{
    "properties": {},
    "routing_key": "q_testing",
    "payload": "{
        \"message\": \"message from terminal\"
    }",
    "payload_encoding": "string"
}

答案 2 :(得分:0)

我设法使用下划线“ _”(而不是破折号)发送内容类型: 有关有效属性的列表,请参见here

{
    "properties": {
       "content_type":"application/json" // underscore "_" here!
    },
    "routing_key": "", // for all queues in exchange
    "payload": "{
        \"message\": \"message from terminal\"
    }",
    "payload_encoding": "string"
}

我正在将Java spring amqp与Jackson2JsonMessageConverter一起使用以接收消息。

答案 3 :(得分:0)

要使用JSON格式的有效负载,您必须在base64中对其进行编码,并使用viewModel.getAllDrinks.observe(this, Observer { drinks -> adapter.updateData(drinks)} 属性。