242.9. Netty ボスおよびワーカースレッドプールの再利用

Netty には、ボスとワーカーの 2 種類のスレッドプールがあります。デフォルトでは、各 Netty コンシューマーとプロデューサーにはプライベートスレッドプールがあります。複数のコンシューマーまたはプロデューサー間でこれらのスレッドプールを再利用する場合は、スレッドプールを作成してレジストリーに登録する必要があります。

たとえば、Spring XML を使用すると、以下に示すように、2 つのワーカースレッドを持つ NettyWorkerPoolBuilder を使用して共有ワーカースレッドプールを作成できます。

<!-- use the worker pool builder to help create the shared thread pool -->
<bean id="poolBuilder" class="org.apache.camel.component.netty.NettyWorkerPoolBuilder">
  <property name="workerCount" value="2"/>
</bean>

<!-- the shared worker thread pool -->
<bean id="sharedPool" class="org.jboss.netty.channel.socket.nio.WorkerPool"
      factory-bean="poolBuilder" factory-method="build" destroy-method="shutdown">
</bean>
ヒント

Boss スレッドプールには、Netty コンシューマー用の org.apache.camel.component.netty4.NettyServerBossPoolBuilder ビルダーと、Netty プロデューサー用の org.apache.camel.component.netty4.NettyClientBossPoolBuilder があります。

次に、Camel ルートで、以下に示すように URIworkerPool オプションを設定することにより、このワーカープールを参照できます。

<route>
  <from uri="netty4:tcp://0.0.0.0:5021?textline=true&amp;sync=true&amp;workerPool=#sharedPool&amp;usingExecutorService=false"/>
  <to uri="log:result"/>
  ...
</route>

別のルートがある場合は、共有ワーカープールを参照できます。

<route>
  <from uri="netty4:tcp://0.0.0.0:5022?textline=true&amp;sync=true&amp;workerPool=#sharedPool&amp;usingExecutorService=false"/>
  <to uri="log:result"/>
  ...
</route>

などがあります。