Netty поддерживать соединения и как уведомить о сбое в будущем - PullRequest
0 голосов
/ 27 сентября 2019

Я пытаюсь создать цикл while в клиенте, который пытается поддерживать несколько соединений с сервером.Когда обработчик канала получает определенный ответ (ошибку) от сервера, он должен закрыть канал и пометить этот канал как неудачный.

Channel channel = this.channelPool.acquire().syncUninterruptibly().getNow();
// release channel when closed to unblock creating new channel.
channel.closeFuture().addListener((ChannelFutureListener) future -> {
    // not success wait and retry
    if(!future.isSuccess()){
         trySleep();
    }
    // close normally, no error, release so can create another connection immediately
    this.channelPool.release(future.channel());
});

Здесь есть два вопроса

  1. это правильный способ использовать цикл while и FixedChannelPool для поддержания количества соединений от клиента к серверу?
  2. Как заставить канал Future провалиться?Класс CloseFuture всегда устанавливает успех, когда setClosed () вызывается https://github.com/netty/netty/blob/4.1/transport/src/main/java/io/netty/channel/AbstractChannel.java#L1159

. Этот пример является хорошим способом сохранить одно соединение.но это требует синглтона, который я хочу избежать.Спасибо!

...