2016-10-13 11 views
1

私はWindowsサービスで聴いている実行中のEvenHubを持っています。偶然、WindowsServiceは2日間作業を停止しました。それが停止したEventHubからデータをどのように読み取ることができますか?私のOffSetの設定は次のようになります:指定された時刻からEventHubデータを読み込みます

processorOptions.InitialOffsetProvider = (partionId) => DateTime.UtcNow; 

私はWindowsサービスをもう一度開始しようとしましたが、今から開始しました。

これについてのご意見はありますか?

答えて

2

EventProcessorawait context.CheckpointAsync();とお電話をしていますか?そうでない場合は、簡単にこれを行うことはできません。通常、EventProcessorは処理されたアイテムを追跡します。あなたはawait context.CheckpointAsync();に電話するか、またはEventProcessorによっていくつかの時間が経過した後、またはいくつかのアイテムが処理された後に電話をかけることで行います。あなたは基本的には今の前に到着したすべての項目を無視するEventProcessorを伝える

processorOptions.InitialOffsetProvider = (partionId) => DateTime.UtcNow; 

を使用して

。それはあなたが必要とするものではありません。処理コードにawait context.CheckpointAsync();というを呼び出した場合は、このコールを削除してを削除します。処理されていないアイテムの処理が再開されます。使用可能なチェックポイントがない場合は、設定された保持状態に応じて、ストリームの先頭から開始されます。その後、すでに処理している可能性があるアイテムを手動でスキップする必要があります。

一部のバックグラウンド読み取り:

understanding check pointing in eventhub

https://blogs.msdn.microsoft.com/servicebus/2015/01/16/event-processor-host-best-practices-part-1/

http://blogs.biztalk360.com/understanding-consumer-side-of-azure-event-hubs-checkpoint-initialoffset-eventprocessorhost/

+0

'はcontext.CheckpointAsync()を待ちます;'特定の時間量で定義されます。あなたが提供した手がかりで問題を解決しました。今すぐUtc Dateの代わりにカスタムDateTimeを設定してください。ありがとうピーター.. :) – vishnu

関連する問題