Netty Sharable Channel Handler - это экземпляр Singleton? - PullRequest
0 голосов
/ 03 апреля 2020

Netty Sharable Channel Handler - это экземпляр Singleton? У меня очень высокая система QPS. Поэтому, если я хочу избежать создания объекта-обработчика при каждом соединении / запросе. Каков наилучший способ добиться этого?

  1. @ Sharable поверх класса обработчика
  2. HandlerClass handler = new HandlerClass(); pipeline.addLast("handler", handler);
    ИЛИ
  3. создание нового экземпляра обработчика идеальный способ. pipeline.addLast("handler", new HandlerClass());

Также можно ли создать только один экземпляр нового HttpRequestDecoder (), нового HttpResponseEncoder (), нового HttpObjectAggregator (65536)?

1 Ответ

0 голосов
/ 03 апреля 2020

Да, если обработчик @Sharable, это может быть одиночный код. Тем не менее, некоторым обработчикам может потребоваться некоторое состояние, которое соответствует Channel и поэтому не может быть разделено. Также обратите внимание, что обработчики @Sharable должны быть поточно-ориентированными, поскольку разные Channel s могут использовать разные EventLoop s.

Из-за упомянутых выше «ограничений» не все обработчики могут быть доступными. например, все перечисленные вами обработчики (HttpRequestDecoder, HttpResponseEncoder и HttpObjectAggregator) или недоступные для совместного использования, поэтому необходимо создать новый экземпляр для Channel.

...