Гибкий механизм тайм-аута в JBoss Netty? - PullRequest
1 голос
/ 25 февраля 2011

Я подумываю перенести мою реализацию Java NIO на JBoss Netty , поскольку она обеспечивает более чистую модель, чем я реализовал.Реализация управляет рядом клиентских подключений к компонентам через TCP с использованием проприетарного протокола.

Одним из аспектов моей реализации, который я не вижу в Netty, является возможность устанавливать произвольные тайм-ауты, которые:

  1. Ожидание чтения некоторых данных из Компонента.Я знаю, что Netty имеет ReadTimeoutHandler, но Компонент может легко изменять / отключать значение тайм-аута при его прохождении через конечный автомат?
  2. Подождите, пока пройдет время, чтобы я мог повторно подключиться к Компоненту(дать компоненту время для перезапуска после отключения).Это совершенно не связано с коммуникацией и представляет собой простой тайм-аут, однако я бы хотел, чтобы тайм-аут «событие / исключение» был представлен классу обработчика так же, как и другие тайм-ауты, связанные с коммуникацией.

Может ли этот механизм тайм-аута быть реализован с использованием Netty?

Заключение : Учитывая, что мне нужно будет реализовать механизм тайм-аута, который будет работать в своем собственном потоке, я не собираюсь преобразовыватьв конце концов, используя Netty.

1 Ответ

3 голосов
/ 25 февраля 2011

См. ChannelConfig .Метод setConnectTimeoutMillis (int) устанавливает время ожидания в миллисекундах.Вы можете вызвать этот метод через экземпляр Bootstrap , вызвав setOption (String, Object) .name будет "connectTimeoutMillis", а value будет желаемым тайм-аутом в миллисекундах.

В следующем фрагменте показано, как установить время ожидания соединения на 5000 миллисекунд (5 секунд).

ClientBootstrap bootstrap... // bootstrap instance
bootstrap.setOption("connectTimeoutMillis", 5000);
...