我有以下路线......
<route id="VM01_spit_products">
<from uri="direct:processXML" />
<split>
<method ref="CamelSplitOnKey" method="splitIntoBatches" />
<to uri="vm:processXMLSplit" />
</split>
</route>
<route id="VM01_processXML">
<from uri="vm:processXMLSplit?concurrentConsumers=15" />
<bean ref="Builder" method="createXMLFile" />
<to uri="{{ChangeReceiver}}" />
</route>
我期望使用VM或SEDA意味着如果分离器正在生成5条消息,那么我定义的15个线程中的一个将获取这些消息中的每一条。当我调试到Builder类时,我可以看到消息是按顺序拾取的。
如果我使用VM或SEDA,我会看到相同的内容。
有人可以提出我出错的地方吗?
注意:
新信息。
我已将此代码添加到我的Builder.java
中SedaEndpoint seda = (SedaEndpoint) camelContext.getEndpoint("seda:processXMLSplit");
int size = seda.getExchanges().size();
System.out.println("size ["+size+"]");
每次打印大小为0。
这让我觉得分裂并没有像我预期的那样排队。
答案 0 :(得分:1)
即使你已经定义了你的vm消费者有15个线程,它也不会影响你的Split工作方式。默认情况下,Split按顺序工作,因此您必须将Split配置为使用 parallelProcessing 才能获得所需的结果。请参阅Splitter ParallelProcessing中的进一步说明。另请注意,@ Itsallas评论说您可能需要使用相同参数配置vm端点。