227.9. Netty ボットおよびワーカースレッドプールの再利用
Camel 2.12 から利用可能
Netty には、boss と worker の 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.netty.NettyServerBossPoolBuilder ビルダーと、Netty プロデューサー用の org.apache.camel.component.netty.NettyClientBossPoolBuilder があります。
その後、以下のように URI に workerPool オプションを設定して、このワーカープールを参照できます。
<route>
<from uri="netty:tcp://localhost:5021?textline=true&sync=true&workerPool=#sharedPool&orderedThreadPoolExecutor=false"/>
<to uri="log:result"/>
...
</route>
別のルートがある場合は、共有ワーカープールを参照できます。
<route>
<from uri="netty:tcp://localhost:5022?textline=true&sync=true&workerPool=#sharedPool&orderedThreadPoolExecutor=false"/>
<to uri="log:result"/>
...
</route>
- などになります。