我正在使用 Spring Cloud Bus(1.2.1.RELEASE,Camden.SR2)。CustomEvent
我有一个创建和注册的自定义事件(调用它)@RemoteApplicationEventScan
以及一个自定义AbstractBusEndpoint
实现来发布事件。我能够将事件发布到总线就好了。
我的远程应用程序接收到事件并确认(我使用trace
端点验证了这一点)。我已经通过调试验证了是CustomEvent
通过ApplicationEventPublisher
. BusAutoConfiguration#acceptRemote
我的远程应用程序中有一个带有事件处理程序的 bean(我已将其自动配置到我的所有微服务中):
@Component
public class EventListener {
@EventHandler(CustomEvent.class)
public void handleCustomEvent(CustomEvent event) {
..
}
}
尽管如此,事件处理程序将不会接收到该事件。我在AbstractApplicationEventMulticaster
类中进行了跟踪,尽管创建了我的 bean(通过beans
端点验证),但侦听器不在ApplicationListener
s 检索的列表中ListenerRetriever
。我确实BusAutoConfiguration.acceptLocal
在此列表中看到了侦听器,但没有看到我的自定义侦听器。
此事件处理程序也在源应用程序上注册(我从中访问总线端点以启动事件的应用程序)。自定义侦听器接收此应用程序中的事件,但不接收远程应用程序。
本质上,这两个应用程序的配置完全相同,除了一个配置为CustomEvent
使用AbstractBusEndpoint
.
我不知道在 Spring 代码中还有什么地方可以调试这个问题。如果有人有一个线程,他们可以引导我,将不胜感激。