Какой лучший способ восстановить соединение после закрытия соединения в 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.

Любой другой простой способ добиться того же?

Спасибо,

Ответы на вопрос(2)

Ваш ответ на вопрос