EventBus Google отключение гуавы

В настоящее время я использую подход guava EventBus в моем приложении. Слушатель пытается выполнить какую-то работу, и, если это не удается, событие должно быть снова в шине и повторно отправлено.
Мой вопрос: что, если мое приложение закрывается (выполняет выключение)? Будет ли отправлять оставшиеся события в автобусе?

Я ищу какой-то подход, например, реализованный в ActiveMQ выключить hoow

если брокер установит хук отключения, чтобы он мог правильно отключиться при уничтожении JVM

К сожалению, я не нашел что-то подобное в гуаве EventBus.

1 ответ

Решение

Стандартная гуава EventBus синхронно, не имеет внутреннего Thread или что-то типа того. Если поток, который вызывает post(Object event) Умирает, EventBus перестает доставлять события (потому что он использует поток вызывающего).

AsyncEventBus с другой стороны, занимает Executor (от java.util.concurrent пакет) во время строительства, который используется для отправки событий. В этом случае это зависит от того, какую реализацию исполнителя вы используете. Например, ThreadPoolExecutor понадобится shutdownNow() позвонить, чтобы прекратить доставку сообщений.

Другие вопросы по тегам