Какой лучший способ восстановить соединение после закрытия соединения в Netty
Простой сценарий:
Класс A более низкого уровня, который расширяет SimpleChannelUpstreamHandler. Этот класс является рабочей лошадкой для отправки сообщения и получения ответа.Класс B верхнего уровня, который может использоваться другой частью системы для отправки и получения сообщения (может имитировать синхронный и асинхронный). Этот класс создает ClientBootstrap, устанавливает фабрику конвейеров, вызывает bootstrap.connect () и в конечном итоге получает дескриптор / ссылку на класс A, через который будет использоваться для отправки и получения сообщения. Что-то вроде:
ChannelFuture future = bootstrap.connect();
Channel channel = future.awaitUninterruptibly().getChannel();
Обработчик = channel.getPipeline (). Get (A.class);
Я знаю, что в классе A я могу переопределить публичный void channelClosed (ChannelHandlerContext ctx, ChannelStateEvent e); так что когда удаленный сервер не работает, я могу получать уведомления.
Поскольку после закрытия канала исходная ссылка на класс A (описанный выше обработчик) в классе B больше не действительна, поэтому мне нужно заменить ее новой ссылкой.
В идеале, я хочу, чтобы у класса A был механизм уведомления класса B в вышеупомянутом переопределенном методе channelClosed, чтобы bootstrap.connect снова вызывался в классе B. Один из способов сделать это - иметь ссылку в классе A, которая ссылается на класс B Чтобы сделать это, мне нужно будет передать ссылку на класс B в PipelineFactory, а затем передать PipelineFactory ссылку B на A.
Любой другой простой способ добиться того же?
Спасибо,