Netty каналы жизненного цикла - PullRequest
1 голос
/ 25 марта 2019

После прочтения руководств и примеров netty у меня все еще остаются вопросы:

Мое приложение взаимодействует с несколькими сторонними конечными точками.Для этого я использую http-клиент, реализованный с помощью Netty.Таким образом, в основном поток представляет собой следующий

  1. Http-вызов для выполнения операции 1 - некоторая обработка бизнес-логики -
  2. Http-вызов для выполнения операции 2 - некоторая обработка бизнес-логики--
  3. Http-вызов для выполнения операции 3 - некоторая обработка бизнес-логики -

Каждая операция выполняется в другом потоке.

Q1: Нужно ли создаватьи закрывать канал для каждого нового запроса, или мне просто нужно повторно использовать один и тот же канал для каждого конца и использовать его, пока он не станет доступным.

Q2: Поскольку я общаюсь с несколькими системами, я полагаю, что я должен использовать какой-то пул каналов?

Q3: Если мне нужно повторно использовать канал, как обращаться с закрытым каналом.Допустим, у меня есть несколько потоков, желающих инициировать http-запрос к одному и тому же каналу, и первый отказывает, потому что соединение закрыто.Нужно ли координировать / блокировать потоки, чтобы дождаться создания нового канала и разрешить продолжить только после того, как новый канал снова открыт?

В4: Когда я захочу иметь более одного канала на конечную точку?(Возможно, если я захочу использовать лучшие процессорные ядра?)

1 Ответ

0 голосов
/ 27 марта 2019

Это действительно хороший учебник, в котором рассказывается, как он работает под капотом. Netty IO . Вам нужно создать несколько ресурсов только один раз. Группа цикла событий, которая является потоком, может быть повторно использована. По сути, вам не нужно беспокоиться о канале, если он правильно настроен. Просто используйте канал для чтения и записи или используйте обработчики для выполнения работы. Когда закончите, закройте канал, но не закрывайте EventLoopGroup, потому что вам нужно будет передать его другому загрузчику. Вы можете использовать пул каналов, если вы будете делать много подключений, но это обычно не требуется.

Я также рекомендую это руководство, которое ответит вам на другие вопросы. Он говорит вам, как лучше писать на канал из других потоков, и т. Д. Netty Best Practices

Ваши вопросы, отличные от конкретного случая. Почему бы не настроить основной метод тестирования или тестовый модуль и попробовать его самостоятельно, пройдя по этим двум ссылкам, если не другое учебное пособие или два? Netty может быть сложным зверем, и вы можете делать практически все, что захотите, но на самом деле она обеспечивает все, что вам нужно, на начальном сетевом уровне без особых сложностей. Еще один для дороги , также посмотрите их образцы Примеры от Netty . Их образцы представляют наиболее распространенные варианты использования и базовый уровень сетевых протоколов.

...