3

目前我在我的应用程序中使用 guava EventBus 方法。侦听器尝试做一些工作,如果失败,事件应该返回总线并重新发送。
我的问题是:如果我的应用程序出现故障(执行关闭)怎么办?它会在总线上发送剩余的事件吗?

我正在寻找一些方法,例如在ActiveMQ 中实现关闭如何

代理是否应该安装一个关闭钩子,以便它可以在 JVM 终止时正确关闭自己

不幸的是,我在 EventBus guava 中没有找到类似的东西。

4

1 回答 1

2

标准番石榴EventBus是同步的,它没有内部Thread或类似的东西。如果调用的线程post(Object event)死亡,EventBus 停止传递事件(因为它使用调用者的线程)。

AsyncEventBus另一方面,在构造期间需要一个(Executor来自java.util.concurrent包),用于调度事件。在这种情况下,这取决于您使用的执行器实现。例如ThreadPoolExecutor,需要一个shutdownNow()呼叫来停止传递消息。

于 2015-07-09T09:29:00.057 回答