Как позволить салату уведомлять приложение, когда соединение не работает? - PullRequest
0 голосов
/ 28 ноября 2018

Мы используем салат в нашем проекте.У нас есть требование следить за состоянием связи.

Я знаю, что салат может повторно подключить Redis, когда соединение не работает.Но есть ли способ уведомить приложение о том, что соединение не работает?

Спасибо, Стивен

1 Ответ

0 голосов
/ 30 ноября 2018

Салат предоставляет модель событий для событий подключения.Вы можете подписаться на EventBus и реагировать на события, опубликованные в автобусе.Существует несколько событий, но в вашем случае вы хотите прослушивать подключенные и отключенные события:

  • ConnectionActivatedEvent: логическое соединение активировано и может использоваться для отправки команд Redis (SSLрукопожатие завершено, PING перед активацией полученного ответа)
  • ConnectionDeactivatedEvent: логическое соединение деактивировано.Состояние внутренней обработки сбрасывается, а флаг isOpen() устанавливается на false.

Оба события запускаются после получения событий, связанных с транспортом, таких как ConnectedEvent соответствующие DisconnectedEvent.

В следующем примере показано, как использовать эти события:

RedisClient client = RedisClient.create()
EventBus eventBus = client.getresources().eventBus();

Disposable subscription = eventBus.get().subscribe(e -> {

    if (e instanceOf ConnectionActivatedEvent) {
        // …
    }
});

…
subscription.dispose();
client.shutdown();

Обратите внимание, что события отправляются асинхронно.Все, что происходит в приемнике событий, должно быть неблокирующим (т. Е. Если вам нужно вызвать блокирующий код, например, для дальнейшего взаимодействия с Redis, пожалуйста, перенесите эту задачу на выделенный Thread).

Подробнее

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...