240.10. Netty 영장 및 작업자 스레드 풀 재사용
Camel 2.12에서 사용 가능
Netty에는 두 가지 종류의 스레드 풀, 즉 영장과 작업자가 있습니다. 기본적으로 각 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>
보스 스레드 풀의 경우 Netty 소비자를 위한 org.apache.camel.component.netty.netty.NettyServerBossPoolBuilder 빌더와 Netty 생산자를 위한 org.apache.camel.component.netty.NettyClientBossPoolBuilder 가 있습니다.
그런 다음 Camel 경로에서 다음과 같이 URI 에서 workerPool 옵션을 구성하여 이 작업자 풀을 참조할 수 있습니다.
<route>
<from uri="netty:tcp://0.0.0.0:5021?textline=true&sync=true&workerPool=#sharedPool&orderedThreadPoolExecutor=false"/>
<to uri="log:result"/>
...
</route>
그리고 다른 경로가 있는 경우 공유 작업자 풀을 참조할 수 있습니다.
<route>
<from uri="netty:tcp://0.0.0.0:5022?textline=true&sync=true&workerPool=#sharedPool&orderedThreadPoolExecutor=false"/>
<to uri="log:result"/>
...
</route>
- 및 so on.