如何使用Web插件将JSON有效负载发送到RabbitMQ?

时间:2015-12-10 11:29:59

标签: python json queue rabbitmq

我有一个安装了网络管理插件的RabbitMQ 3.4.2 instance

当我使用Python的kombu队列包将消息{'operationId': 194}推送到队列时,消息将在另一端作为字典读取。

但是,当我使用Web控制台发送消息时:

enter image description here

我在接收端收到以下错误:

operation_id = payload['operationId']
TypeError: string indices must be integers

我尝试添加content-type标题和属性,但没有成功。

由于阅读器代码相同,这意味着Web发件人不会将已发送的邮件标记为JSON /字典有效内容,因此在另一端将其作为字符串读取。

知道如何使用RabbitMQ Web控制台将消息标记为JSON消息吗?

2 个答案:

答案 0 :(得分:19)

我必须使用content_type代替content-type(下划线而不是连字符)。

这是一个非常值得怀疑的设计决定,因为每个人都知道的标准是content-type

enter image description here

答案 1 :(得分:1)

您需要反序列化输出。

import json
payload = json.loads(payload)
operation_id = payload['operationId']

此外,{'operationId': 194}无效JSON。虽然看起来您在屏幕截图中使用双引号,但请确保使用双引号替换单引号。

修改 所以你是对的,kombu应该处理这个问题。查看代码时,标头可能区分大小写。将属性标题从Content-Type更改为content-type