0
私はparallell作業を行うためにsplit内のthreadPoolを使用するcamelRouteを持っています。私の問題は、私はは、分割が1つのスレッドを実行し、スレッドプールが指定された量のスレッドを実行するので、常に1つのスレッドで終わることです。私はスレッドプールのスレッドの量を上限にしたいと思います。Apache Camel splitはThreadPoolで並列実行されますが、なぜですか?
これはなぜ起こるのですか?ルートとのThreadPoolがそのように私のラクダのcontext.xmlのように構成されて
from(FROM_ENDPOINT)
.routeId(ID)
.split(body(), new GroupedExchangeAggregationStrategy())
.executorServiceRef("ThreadPool")
.bean(bean, "beanMethod")
.end()
.bean(bean)
.multicast()
.to(TO_ENDPOINT);
(ここからとIDなどのようなコードでは他の値、が、カントショー...)以下のラクダ、コンテキスト... :
<camel:camelContext id="application-context" useMDCLogging="true" xmlns="http://camel.apache.org/schema/spring">
<propertyPlaceholder id="properties" location="ref:props"/>
<routeBuilder ref="refToRoute"/>
<threadPoolProfile id="ThreadPool" maxPoolSize="2"
maxQueueSize="-1" poolSize="2"/>
</camel:camelContext>
ありがとう、私は余分なスレッドがある理由を知っています。スレッドプールの値を1に設定することを考えましたが、1スレッドで実行したいのですが?テストでは、私たちが順番に参照する必要があるスレッドプールログの値で実行している作業として1つのスレッドのみを使用すると有益です。これにより、並列フローはこれを非常に難しくします。今私が唯一の解決策は、ルートからスレッドプールを削除することです。 – pressbyron
1スレッドの場合、スレッドプールを使用せず、そのすべてを同じ順序で同じ順序で使用します。 –
はい、私は理解していますが、本番環境ではスレッドプールを持っていますが、デバッグのためにテストには入っていません。私はtest/prodのための2つのコードベースを必要としませんが、私はちょうどテストで1つのスレッドを使用するようにスレッドプールを設定したいと思っています。しかし、これは不可能かもしれませんか? – pressbyron