torutkのブログ

ソフトウェア・エンジニアのブログ

EventBus(続々々)

の続きとなります。

EventBusのような間接的な通知を使ったプログラミングでは、送ったはずのイベントが届かない、という事象が起きます。おおよそはバグなのですが、疎結合コンポーネント設計では、なかなか原因にたどり着くのが大変です。

EventBusでは、発行したイベントにpublicationStatusTrackerインタフェースを実装しておくことで、EventBus内でイベントが運ばれる段階でイベントオブジェクトにステータスが書き込まれ、それを確認することで状況を把握することができます。
ステータスは、PublicationStatus列挙型で以下の種類が定義されています。

  Unpublished(未発行)
   ↓ EventServiceへpublishした
  Initiated (発行受付)
   ↓ EventService内でキューにイベントを追加した
 Queued   (配送待ち)
   ↓ イベントキューから取り出し配送を開始する
 Publishing (配送中)
   ↓ すべてのSubscriberに配送を完了した
 Completed (配送完了)