EventBus google guava shutdown hook

时间:2014-07-14 15:50:49

标签: guava shutdown-hook event-bus

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

我正在寻找一些方法,例如在ActiveMQ shut down hoow

中实施
  

代理应该安装一个关闭钩子,以便它可以正常关闭   本身就是JVM kill

不幸的是我在EventBus番石榴中找不到类似的东西。

1 个答案:

答案 0 :(得分:1)

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

另一方面,AsyncEventBus在构建期间采用Executor(来自java.util.concurrent包),用于调度事件。在这种情况下,它取决于您使用的执行程序实现。例如,ThreadPoolExecutor需要shutdownNow()调用才能停止发送消息。