2017-01-20 6 views
0

私はDS(宣言的なサービス)で登録された2つのEventHandlersを持っています。 EventAdmin.sendEvent()を呼び出す別のDSサービスがあります。 EventHandlersのうちの1つだけがイベントを受信したときに発生します。その1つは、イベントが発生したときに準備ができていないようです。 したがって、2番目のEventHandlerが使用可能になると、イベントが既に消費されているため、遅すぎます。 EventHandlersの両方とも@Component注釈にimmediate=trueが設定されています。DS登録イベントハンドラがイベントを逃した

このシナリオを解決するための「エレガントな」方法はありますか?

答えて

0

これは単なるタイミングの問題です。生産者が生産するときには、すべての消費者が準備ができていない。 Event Adminのポイントは、イベントプロデューサと消費者を切り離すことです。しかし、すべての消費者にすべてのイベントが表示されるようにする必要がある場合は、すべての消費者がプロデューサを生産する前に受信する準備ができているか、過去から新しく到着した消費者にイベントを配信できる別の仕組みを選択する必要があります。

+0

デカップリングはここではすばらしかったでしょうが、過去のイベントを思い出すと、ランタイムに複雑さが増します。別のソリューションに切り替える予定です。 –

関連する問題