2013-11-02 3 views
3

Я планирую изменить Netty UptimeClient (см. here). Исходная версия предназначена для бесконечного запуска: она повторно соединяется с хостом в случае разъединения. Я хотел бы добавить метод «terminate» в UptimeClient.java. Метод будет отключать или останавливать процесс пересоединения из внешнего потока, изящно отключать Netty и возвращать.Netty: прекратить повторное подключение и завершение работы

Поскольку клиентский канал может измениться из-за процесса пересоединения, было бы безопасным сохранить все каналы, возвращаемые «bootstrap.connect()» в ChannelGroup, и вызвать «закрыть», используя группу, прежде чем выпускать ресурсы Netty?

Как бы вы реализовали метод «завершения»? (редактировать: используя 3.7.0)

ответ

5

В Nety 4.0, вы можете просто позвонить shutdownGracefully(...) на EventLoopGroup, который управляет всеми вашими каналами. Затем все существующие каналы будут автоматически закрыты, и попытка повторного подключения должна быть отклонена. Пожалуйста, не стесняйтесь обращаться к проблеме, если это не сработает.

Если вы используете Netty 3.x, к сожалению, для этого нет автоматического механизма. Вы должны обеспечить, чтобы закрыть все каналы, потому что цикл событий не будет завершаться, пока он не сможет управлять каналом. Для получения дополнительной информации см. NioClientChannelFactory («Жизненный цикл потоков и изящное выключение»)

+0

Есть ли эквивалентный механизм с использованием версии 3.7.0? EventLoopGroup существует только в Netty 4. +. –

+0

Обновлен ответ. – trustin

Смежные вопросы