簡體   English   中英

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

[英]Python Azure Event Hub Consume Event 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 object 上的屬性:

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然后只需在第一個打印語句下添加此行打印事件屬性:

接收.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'}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM