2016-10-16 5 views
0

Я новичок в Netty, но, к сожалению, для начинающего нет подробной документации/учебника.Использование EventLoopGroup в 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? Что он делает на заднем плане?

ответ

0

Я не уверен, что вы просите. EventLoopGroups - это всего лишь группировка потоков, используемых для netty. Используя netty, ваши клиенты будут в EventLoopGroup и будут привязаны к потокам в круговом деле, так что некоторые из них могут быть в одном потоке.

Лично я считаю, что документы хороши, но это определенно не каркас, предназначенный для новичков.

+0

Спасибо за ответ. Я обновил вопрос на примере. Надеюсь, теперь это становится яснее. – anlkn

+0

NettyChannelBuilder находится в пакете grpc не netty, я не знаю много о том, как grpc выглядит так, как будто они обрабатывают создание цикла событий для вас. Я бы не стал беспокоиться о передаче цикла событий, пока вам не понадобится дополнительный контроль. –

+0

Это просто специальный пул потоков. –