Python Azure 事件中心使用事件属性

标签 python azure properties

我正在努力获取使用 python 发送到 azure 事件中心的事件的属性。目前我不知道如何使用通过事件消息发送的其他事件属性。

这是我发送消息的代码,效果很好,但另一方面我想使用这些属性。

   event_data_batch = await producer.create_batch()
    i = 0
    while i <= 100:
        #json_obj = {"TimeStamp": str(datetime.utcnow()),"Name":f"Test{i}", "Metric":"11", "Source": "EventHubMessage"}
        json_obj = {"TimeStamp": "timestamp","Name":"Test", "Metric":11, "Source": "EventHubMessage"}
        string = json.dumps(json_obj)
        Event_data = EventData(body=string)
        Event_data.properties = {"Table":"TestTable", "IngestionMappingReference":"TestMapping", "Format":"JSON", "Encoding":"UTF-8"}
        event_data_batch.add(Event_data)
        i += 1
    print(event_data_batch)
    return event_data_batch

如您所见,我正在发送其他 event_data 属性 {"Table":"TestTable", "IngestionMappingReference":"TestMapping", "Format":"JSON", "Encoding":"UTF-8 "} 以及我想与另一个 python 应用程序一起使用的那些。

您能告诉我该怎么做吗?目前,我只能检索消息正文,但不能检索其属性。

也许你们中的某个人已经弄清楚了这一点。

谢谢!

最好, 克里斯

最佳答案

在应用程序的接收端,您可以访问 EventData 对象的属性,如下所示:

event.properties

打印:

{b'Table': b'TestTable', b'IngestionMappingReference': b'TestMapping', b'Format': b'JSON', b'Encoding': b'UTF-8'}

如果您正在关注 MSFT 的文档:https://learn.microsoft.com/en-us/azure/event-hubs/event-hubs-python-get-started-send然后只需在第一个打印语句下添加此行即可打印事件属性:

recv.py:

async def on_event(partition_context, event):
    # Print the event data.
        print("Received the event: \"{}\" from the partition with ID: \"{}\"".format(event.body_as_str(encoding='UTF-8'), partition_context.partition_id))
        print(event.properties)

此外,如果您想将属性字典用作字符串键值对(而不是字节)的字典,您可以使用字典理解对其进行解码:

{k.decode("utf-8"):v.decode("utf-8") for k,v in event.properties.items()} 

输出:

{'Table': 'TestTable', 'IngestionMappingReference': 'TestMapping', 'Format': 'JSON', 'Encoding': 'UTF-8'}

关于Python Azure 事件中心使用事件属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68874591/

相关文章:

python - 在 Python 中使用滚动条显示大图像

Node.js 和 Express Web API 无法在 Azure 上运行

c# - 如何在同一个类的静态列表属性中添加一个类的对象?

objective-c - 这个复制类方法会泄漏内存吗?

Python:回溯编解码器.charmap_decode(输入,self.errors,decoding_table)[0]

python - 具有 (x,y) 坐标列表的多边形区域

java - Azure Iot集线器Device vs. Service SDK是否可以从Device twin获得所需的属性?

azure - 用于 Azure CLI 的 AWS IAM 用户的 Azure 等效项是什么

wpf - 将文本框绑定(bind)到 WPF 中的属性

python - 停止 Tkinter 菜单自动运行命令