EventBus Google отключение гуавы
В настоящее время я использую подход guava EventBus в моем приложении. Слушатель пытается выполнить какую-то работу, и, если это не удается, событие должно быть снова в шине и повторно отправлено.
Мой вопрос: что, если мое приложение закрывается (выполняет выключение)? Будет ли отправлять оставшиеся события в автобусе?
Я ищу какой-то подход, например, реализованный в ActiveMQ выключить hoow
если брокер установит хук отключения, чтобы он мог правильно отключиться при уничтожении JVM
К сожалению, я не нашел что-то подобное в гуаве EventBus.
1 ответ
Стандартная гуава EventBus
синхронно, не имеет внутреннего Thread
или что-то типа того. Если поток, который вызывает post(Object event)
Умирает, EventBus перестает доставлять события (потому что он использует поток вызывающего).
AsyncEventBus
с другой стороны, занимает Executor
(от java.util.concurrent
пакет) во время строительства, который используется для отправки событий. В этом случае это зависит от того, какую реализацию исполнителя вы используете. Например, ThreadPoolExecutor
понадобится shutdownNow()
позвонить, чтобы прекратить доставку сообщений.