guava - EventBus google guava 关闭 Hook

标签 guava shutdown-hook event-bus

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

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

should the broker install a shutdown hook so that it can properly shut itself down on a JVM kill

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

最佳答案

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

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

关于guava - EventBus google guava 关闭 Hook ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24740581/

相关文章:

java - 来自 UNIX 的关闭 Hook

java - 难以理解关闭 Hook 何时执行以及如何终止 ExecutorService

java - 使用 Spring IoC 在 Guava EventBus 中自动注册 beans

design-patterns - Eventbus 是中介者模式还是观察者模式?

java - Akka的事件总线是否保证消息顺序?

java - 如何在 Guava 中表示 SQL 表和 SELECT 查询?

java - 从 Jar 文件中的类文件读取字节

java - Google Guava : How to use ImmutableSortedMap. 自然顺序?

java - 为什么我不能将 Java 7 菱形语法与 Guava ImmutableSortedMap.Builder 一起使用

java - 如何确保在退出 Java 应用程序之前运行一段代码