我第一次使用azure服务总线在C#source和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?
答案 0 :(得分:4)
问题是由不同方面使用的不同协议引起的:使用AMQP的C#中的发送者或使用REST API通过HTTP在Python中使用默认的.NET序列化行为和接收器。您可以参考文档Using Service Bus from .NET with AMQP 1.0
和Azure Python Service Bus SDK的source code来了解这一点,并且我在其他SO线程Interoperability Azure Service Bus Message Queue Messages中解释了类似的问题。
要避免使用其他参数并仅获取原始json,您可以尝试两种方法,如下所示。
python-qpid-proton
包接收消息,使用AMQP反序列化并获取原始json。希望它有所帮助。