gpt4 book ai didi

java - Camel SEDA 和 VM 端点不使用所有线程

转载 作者:行者123 更新时间:2023-11-30 10:57:05 26 4
gpt4 key购买 nike

我有以下路线...

<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,我会看到同样的结果。

有人可以建议我哪里出错了吗?

注意事项:

  • 基于 JDK 1.5 的 Camel 2.6

新信息。

我已将此代码添加到我的 Builder.java 中

SedaEndpoint seda = (SedaEndpoint) camelContext.getEndpoint("seda:processXMLSplit");
int size = seda.getExchanges().size();
System.out.println("size ["+size+"]");

每次打印大小为 0。

这让我觉得拆分并没有像我预期的那样对消息进行排队。

最佳答案

即使您已将 vm 消费者定义为具有 15 个线程,它也不会影响您的 Split 的工作方式。默认情况下,Split 按顺序工作,因此您必须将 Split 配置为使用 parallelProcessing 以获得您想要的结果。更多信息请参阅 Splitter ParallelProcessing .另请注意@Itsallas 的评论,您可能需要为您的虚拟机端点配置相同的参数。

关于java - Camel SEDA 和 VM 端点不使用所有线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32781248/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com