#java #netty #event-loop
#java #netty #цикл событий
Вопрос:
Я новичок в Netty, но, к сожалению, похоже, что для новичка нет подробной документации / руководства.
У меня есть несколько потоков, каждый из которых создает отдельные клиенты для подключения к отдельным каналам, используя NettyChannelBuilder
. Идея заключается в том, что каждый канал будет отправлять и получать разные сообщения на / с разных хостов. Например. это выглядит так:
class MyServiceClass{
void executeTasks() {
...
//here multiple tasks are executed in a for loop
executorService.execute(new Task(new Client());
...
}
}
class Client {
..
void connect() {
channel = NettyChannelBuilder.forAddress(host, port).build();
}
}
В этом случае у каждой задачи есть свой собственный клиент, и клиенты создают свои собственные каналы для получения сообщений.
Должен ли я создать один EventLoopGroup
в executeTasks и передать его клиентам для использования при создании их канала. Если это так, в чем преимущество использования EventLoopGroup
? Что именно он делает в фоновом режиме?
Ответ №1:
Я не уверен, о чем вы спрашиваете. EventLoopGroups — это просто группировка потоков, используемых для netty. Используя netty, ваши клиенты будут находиться в EventLoopGroup и будут назначаться потокам в циклическом порядке, поэтому некоторые из них могут находиться в одном потоке.
Лично я считаю, что документы отличные, но это определенно не фреймворк, предназначенный для начинающих.
Комментарии:
1. Спасибо за ответ. Я обновил вопрос примером. Надеюсь, теперь это более понятно.
2. NettyChannelBuilder находится в пакете grpc, а не в пакете netty, я мало что знаю о grpc, похоже, они обрабатывают создание цикла событий для вас. Я бы не стал беспокоиться о передаче цикла событий, пока вам не понадобится дополнительный контроль над ним.