检索从 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'))
我订阅了一个 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'))