Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用web插件将JSON负载发送到RabbitMQ?_Python_Json_Queue_Rabbitmq - Fatal编程技术网

Python 如何使用web插件将JSON负载发送到RabbitMQ?

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/字典负载

我安装了一个web管理插件

当我使用Python的queue包将消息
{'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约定,即在其属性中使用下划线。