Я пытаюсь создать цикл 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());
});
Здесь есть два вопроса
- это правильный способ использовать цикл while и FixedChannelPool для поддержания количества соединений от клиента к серверу?
- Как заставить канал Future провалиться?Класс CloseFuture всегда устанавливает успех, когда setClosed () вызывается https://github.com/netty/netty/blob/4.1/transport/src/main/java/io/netty/channel/AbstractChannel.java#L1159
. Этот пример является хорошим способом сохранить одно соединение.но это требует синглтона, который я хочу избежать.Спасибо!