Spring Cloud Bus (1.2.1.RELEASE、Camden.SR2) を使用しています。CustomEvent
私は作成して登録したカスタム イベント (と呼びます) と、イベントを公開するため@RemoteApplicationEventScan
のカスタム実装を持っています。AbstractBusEndpoint
イベントをバスに問題なく発行できます。
リモート アプリケーションがイベントを受信して確認します (trace
エンドポイントを使用してこれを確認しました)。で提供さCustomEvent
れている を介して が公開されていることをデバッグによって確認しました。リモート アプリケーションにイベント ハンドラーを持つ Bean があります (これはすべてのマイクロ サービスに自動構成されています)。ApplicationEventPublisher
BusAutoConfiguration#acceptRemote
@Component
public class EventListener {
@EventHandler(CustomEvent.class)
public void handleCustomEvent(CustomEvent event) {
..
}
}
それにもかかわらず、イベント ハンドラーはイベントを受け取りません。クラス内をトレースしAbstractApplicationEventMulticaster
、Bean が作成されている (エンドポイントを介して検証されている) にもかかわらず、リスナーがによって取得されbeans
た のリストに含まれていません。このリストにはリスナーが表示されますが、カスタム リスナーは表示されません。ApplicationListener
ListenerRetriever
BusAutoConfiguration.acceptLocal
このイベント ハンドラーは、ソース アプリケーション (イベントを開始するためにバス エンドポイントにアクセスしているアプリケーション) にも登録されています。カスタム リスナーは、このアプリケーションでイベントを受け取りますが、リモート アプリケーションでは受け取りません。
基本的に、両方のアプリケーションはまったく同じように構成されていますが、一方がCustomEvent
の実装を使用してを送信するように構成されていますAbstractBusEndpoint
。
この問題をデバッグするために、Spring コード内の他の場所を探す方法がわかりません。誰かが私を導くことができるスレッドを持っているなら、それはありがたいです.