检索从 Python 客户端发送到 Azure 服务总线主题的对象

Retrieve object sent from Python client to an Azure Service Bus Topic

我订阅了一个 Azure 服务总线主题,我正在尝试检索从我的 Python 客户端发送的对象。但是在我的接收端,我得到的是这样的:

<__main__.User object at 0x02F694F0>
<models.AssetPayload object at 0x038EA930>

我试过在 python 和 .NET 中接收。这是我尝试过的虚拟代码:

class User(object):
    def __init__(self, user_id, name):
        self.user_id = user_id
        self.name = name


user = User('123456', 'Shaphil')

# Send Message to 'myTopic'
msg = Message(bytes(user))
bus_service.send_topic_message('myTopic', msg)

# Receive Messages
msg = bus_service.receive_subscription_message('myTopic', 'AllMessages', peek_lock=False)
print msg.body

在 C# 中接收虚拟代码:

var message = subscriptionClient.Receive();
var json = new StreamReader(message.GetBody<Stream>(), Encoding.UTF8).ReadToEnd();

Console.WriteLine(json);

如何检索发件人发送的用户对象(user_id 和名称)?

一个简单的解决方案是对该实例的 .__dict__ 成员调用 bytes()。这是一个标准的 Python dict,如果您的 class 很简单,它将 JSON 像可序列化到 "{'user_id': '123456', 'name': 'Shaphil'}"

请尝试使用以下代码片段创建 Message 对象:

msg = Message(bytes(user.__dict__))

如有任何疑问,请随时告诉我。

这应该有效。

message = Message(json.dumps(<dictionary to be converted into bytes>).encode('utf-8'))