我想從 EventHub 中讀取特定訊息。
我正在使用EventHubConsumerClient和ReadEventsFromPartitionAsync使用 partitionId,以及我擁有的偏移量。
client.ReadEventsFromPartitionAsync(partitionId, EventPosition.FromOffset(offset), cancellationSource.Token);
我遇到的問題是,盡管偏移量和磁區 ID 是正確的,但我沒有收到我期望的訊息。
語境
我正在做一些事情來驗證訊息是否在分布式系統中得到正確處理。
Source Event Hub -> Processor Function -> Destination Event Hubs.
我讀取了兩端(集線器)并驗證訊息到達了它們應該到達的地方,如果沒有,則從源事件中心查找訊息(通過 partitionId 和與訊息 ID 匹配的偏移量)。
我正在查找的訊息似乎沒有我期望的訊息 ID 或偏移 ID。
uj5u.com熱心網友回復:
更新:
我在回憶EventPosition下面錯誤的 SDK 包的默認值和參考的檔案時弄錯了。默認情況下,EventPosition.FromOffset包括在內。(源)
問題中的創建模式將包括提供的偏移量處的事件。如果您沒有看到回傳的事件,則偏移量似乎不正確。
原始答案 (不正確):
您正在構建的EventPosition是非包容性的,不會包括該偏移量的事件,而是從下一個可用事件開始。使用以下多載應該針對您正在尋找的事件:
EventPosition.FromOffset(offset, true)
看起來檔案中的摘要并沒有很好地引起對默認值的注意;我會采取后續行動,以使這一點更清楚。
uj5u.com熱心網友回復:
該問題是由于 AZ 函式系結元資料提供的偏移量不正確造成的。
使用一批一個 - 正確。
使用一批以上的完全錯誤的偏移量、序列等。
更新了 eventthubs 包(預覽版..),它作業正常:/
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/417404.html
標籤:
