【问题标题】:How to read C# object from Azure service bus message in Python如何从 Python 中的 Azure 服务总线消息中读取 C# 对象
【发布时间】:2019-08-10 02:10:18
【问题描述】:

我目前正在尝试从我从 azure 服务总线获得的消息中确定消息内容。但是,内容是我怀疑是用 C# 编写的对象。

<uamqp.c_uamqp.cMessage object at 0x00000000033B3810>

我目前正在使用 python,我想访问这个对象并获取它的属性。有没有办法做到这一点?

编辑: 这只是一个消息对象中包含的属性

{'auto_renew_error': None, 
'_encoding': 'UTF-8', 
'_expiry': None, 
'received_timestamp': datetime.datetime(2019, 8, 8, 13, 21, 39,
405000), 
'_receiver': <azure.servicebus.receive_handler.Receiver object at 0x00000000033A47F0>, 
'_annotations': {'x-opt-enqueued-time': 1565284860716L, 'x-opt-enqueue-sequence-number': 0L, 'x-opt-locked-until': 1565284959471L, 'x-opt-sequence-number': 3406L},
'header': <uamqp.message.MessageHeader object at 0x00000000039BE400>, 
'_app_properties': None, 
'message': <uamqp.message.Message object at 0x00000000039BE320>, 
'properties': <uamqp.message.MessageProperties object at 0x00000000039BE2E8>}
def getAttribute(message):
        print(message.__dict__['message'].__dict__['_message'])

上面的代码基本上只是获取消息对象,然后读取它的属性,并继续查看嵌入在初始消息对象中的对象的属性。我被困在“_messages”对象上,因为我无法使用 .dict

读取它的属性

【问题讨论】:

标签: c# python azure message-queue azureservicebus


【解决方案1】:

即使对象是在 C# 中创建的,它仍然应该被正确序列化并且没有问题地读取。您需要解码正文并解析 JSON 消息。

while True:
    msg = bus_service.receive_subscription_message(config.topic, config.subscription, peek_lock=True)

    if msg.body is None:
        print('No messages')
        continue

     print(json.loads(msg.body.decode("utf-8")))

您能否提供更多代码来展示您的方法以及您从何处获得该结果?

【讨论】:

  • 嘿库尔蒂斯。我更新了代码,希望它能提供更多的上下文
猜你喜欢
  • 2020-02-20
  • 1970-01-01
  • 2022-07-03
  • 2021-07-26
  • 1970-01-01
  • 1970-01-01
  • 2020-07-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多