python - Azure服务总线python客户端问题

标签 python json azure azureservicebus

我第一次使用azure服务总线在C#源代码和python客户端之间传输消息。

我正在创建 ServiceBusService 对象并使用它从函数 receive_subscription_message 获取消息。

我得到的有效负载与预期不符。

我的代码如下所示。

bus_service = ServiceBusService(service_namespace="service_namespace", shared_access_key_name="All", shared_access_key_value="password")
msg = bus_service.receive_subscription_message('test', 'test', peek_lock=True)
print(msg.body)
msg.delete()

msg.body 给出如下字节字符串: b'@\x06string\x083http://schemas.microsoft.com/2003/10/Serialization/\x9ae\x0c{"PUID":"3NFLzV3cjCp8f5JLh3KSnkXDgSw1FWgM","HardDelete":null}\x01'

本来json是推进去的。 有没有办法避免额外的参数并只获取原始json?

最佳答案

该问题是由不同端使用的不同协议(protocol)引起的:C# 中的发送方使用 AMQP 或默认 .NET 序列化行为,Python 中的接收方通过 HTTP 使用 REST API。可以引用文档Using Service Bus from .NET with AMQP 1.0source code Azure Python Service Bus SDK 的了解这一点,我在其他 SO 线程 Interoperability Azure Service Bus Message Queue Messages 中解释了类似的问题.

为了避免额外的参数并仅获取原始 json,您可以尝试以下两种方法。

  1. 使用 REST API在 C# 中通过 HTTP 发送原始 json,无需来自 AMQP 或默认 .NET 序列化行为的任何附加内容。
  2. 使用 python-qpid-proton用Python封装,用AMQP接收消息,反序列化得到原始json。
  3. 在当前情况下,只需从消息中删除附加内容即可提取原始 json,因为每条消息都有相同的附加内容。

希望有帮助。

关于python - Azure服务总线python客户端问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44647351/

相关文章:

python - 如何修复 Keras ValueError : Shapes (None, 3, 2) 和 (None, 2) 不兼容?

azure - 如何检索本地 Service Fabric 集群的证书指纹?

azure - Terraform Azure Key Vault Secret 不依赖于 access_policy

python - 更新 Popup.Animated 以播放 gif 直到外部任务完成 (PYSimpleGUI)

python - 从多个网页收集格式化内容

python - 如何使除脸部以外的所有内容都透明

c# - 只返回大对象的某些属性?

javascript - 使用 Json_encode 变量的最佳方法

php - 从 example.com/myjsonsql.php 提取 json url 到 jquery mobile 无法返回值

api - Azure API 管理中的速率限制是如何计算的