我有一個與事件集線器相連的事件集線器觸發函式,我已將其設定為接收事件。接收訊息作業正常,并且我能夠在訊息從源頭觸發時對其進行處理,但最近我開始注意到接收器處有重復的事件被處理。
我如何確定這些是獨特的事件,可能具有相同的有效載荷或同一事件被多次處理?我讀過關于磁區 Ids 的文章,但這似乎只能告訴我們訊息是從哪個磁區拾取的。很有可能這兩個訊息都是在某個時間間隔內從同一個磁區拾取的。
我的事件集線器觸發器實作看起來如下:
我的事件集線器觸發器實作看起來如下:
[]
public async Task RunAsync()
[EventHubTrigger("az_eventhubname"/span>,
Connection = "connection-string-path", ConsumerGroup = "%AzureEventHubConsumerName%")] 事件資料ed,
ExecutionContext eCtx, PartitionContext PartitionContext)] EventData ed, ExecutionContext eCtx, PartitionContext PartitionContext)
{
var messageBody = Encoding.UTF8.GetString((ed).Body)。
//其他任務 ...
}
我能夠系結ExecutionContext和PartitionContext,但它們都沒有提供訊息id或事件id屬性,EventData
EventData在其SystemProperties中只提供了Sequence Number、Offset和Enque Time。PartitionContext提供了partiton id和其他資訊,如host id、offset、epoch、token,等等。ExecutionContext提供了一個呼叫ID 。
如果 Event Hub Triggers 不提供訊息 ID 或事件 ID,我如何區分具有相同有效載荷的 2 個訊息?
uj5u.com熱心網友回復:
在Event Hubs中,并沒有關于事件身份的強烈概念;定義使事件獨特的責任落在了應用程式身上。 僅僅使用 Event Hubs 服務資料的最接近的做法是將分配給事件的序列號與從該事件中讀取的磁區相結合。
一般來說,我們鼓勵發布者和消費者在Properties字典中的一個專案集上進行協調,該專案集在應用程式背景關系中是有意義的,以識別資料。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/308863.html
標籤:
