我有一个OSGi模块A
,它在PostConstruct中生成一个事件EA
。
我有另一个OSGi模块B
,它取决于事件EA
来执行某些操作。
但模块B
已加载,因此在模块Felix Event Admin
加载后已将事件监听器注册到A
并已生成事件EA
。
因此,等待事件B
达到某个超时值后,模块EA
会失败。
在注册模块B
的监听器之前,有没有办法可以访问所有生成的事件?
我尝试使用OSGiService(waitTimeout = 1000)
,但这只等待服务变得可用..但不是因为它的方法可以完成执行。
感谢。
答案 0 :(得分:1)
听起来好像Event Admin并不是你正在尝试做的事情的正确工具,这似乎更像是持久性消息而不是事件。
事件模型应该:
让听众在加入活动流时不关心,或
为每个侦听器加入
时启动的每个侦听器维护一个单独的事件流在听众全部可用并准备就绪之前,不开始发送活动
如果您需要在特定时间发送“事件”,但不能等待侦听器,那么您需要的是持久性消息传递实现(例如JMS)。这样,当你的监听器启动时,它可以开始处理在启动时排队的任何消息。