1

LMAX Disruptor http://code.google.com/p/disruptor/の開発者/ユーザーへ:

私の質問: EventHandler を使用するなど、Disruptor にタイムアウト機能を適用する方法を提案できる人はいますか?

私の仕事で思いついたシナリオの 1 つを次に示します。

  1. Outbox - ネットワーク経由でサーバーに送信されるメッセージ
  2. 受信トレイ - サーバーから受信した ACK メッセージ
  3. ACK ハンドラ - 送信トレイ メッセージを ACK 済みとしてマークします
  4. タイムアウト ハンドラ - 送信トレイ メッセージを NACKed としてマークします (非常に必要ですが、ディスラプターの設計のどこに適合しますか?)

同じ意見の人はいますか?または、それが不要な理由を誰でも指摘できますか。その後の議論が簡潔になることを願っています。

ありがとうございました。

4

1 に答える 1

0

タイムアウトハンドラーを明確にするために、メッセージを配信できなかった一定期間後に「起動」しますか?

ディスラプターと連携する方法は、インバウンド用のリングバッファーとアウトバウンドメッセージ用のリングバッファーがあることです...したがって、電子メールが着信し、適切なイベントを使用してインバウンドリングバッファーに配置します。次に、メッセージを処理し(つまり、デコード、分析、ログ、保存)、送信リングバッファに配置して別のシステムに送信します...別のハンドラーがメッセージを取得してデータベースに保存するか、SMTPを使用して別のサーバーに送信します...エラー/タイムアウトなどが発生した場合は、インバウンドリングバッファにエラー(NACK)を通知するイベントを作成し、このメッセージを処理します。それは理にかなっていますか?!?

于 2012-04-04T22:05:35.077 に答える