Python 如何使用web插件将JSON负载发送到RabbitMQ?
我安装了一个web管理插件 当我使用Python的queue包将消息Python 如何使用web插件将JSON负载发送到RabbitMQ?,python,json,queue,rabbitmq,Python,Json,Queue,Rabbitmq,我安装了一个web管理插件 当我使用Python的queue包将消息{'operationId':194}推送到队列时,消息在另一端作为字典读取 但是,当我使用web控制台发送消息时: 我在接收端收到以下错误: operation_id = payload['operationId'] TypeError: string indices must be integers 我尝试添加内容类型标题和属性,但没有成功 由于读取器代码相同,这意味着web发送者不会将发送的消息标记为JSON/字典负载
{'operationId':194}
推送到队列时,消息在另一端作为字典读取
但是,当我使用web控制台发送消息时:
我在接收端收到以下错误:
operation_id = payload['operationId']
TypeError: string indices must be integers
我尝试添加内容类型
标题和属性,但没有成功
由于读取器代码相同,这意味着web发送者不会将发送的消息标记为JSON/字典负载,因此在另一端将其读取为字符串
知道如何使用RabbitMQ web控制台将消息标记为JSON消息吗?您需要对输出进行反序列化
import json
payload = json.loads(payload)
operation_id = payload['operationId']
此外,{'operationId':194}
不是有效的JSON。虽然看起来您在屏幕截图中使用了双引号,但请确保将单引号替换为双引号
编辑:
所以你是对的,kombu应该处理这件事。从代码看,标题很可能区分大小写。将属性标题从
内容类型
更改为内容类型
我不得不使用内容类型
而不是内容类型
(下划线而不是连字符)
这是一个相当可疑的设计决策,因为大家都知道的标准是
有趣的是,从Python代码发送的消息不需要在接收端进行反序列化;因此,我想有一些元数据可以帮我完成这项工作。当我发送
{'operationId':194}
时,它在另一端作为字典接收。我也希望在从web控制台发送时有这种行为。@AdamMatan你说得对。我认为这可能和标题名称区分大小写一样愚蠢。我应该注意这一点。在我自己的amqp库中,我使用了一个\
实现了相同的功能。不错!为什么你要建立自己的而不是使用Kombu或类似的东西?我想要更简单的东西,有一个后台线程来跟踪心跳等。它不是HTTP头。。。这是为了将其与上述密钥区分开来,并遵守RabbitMQ约定,即在其属性中使用下划线。