为 seda 设置队列大小适用于"to",但不适用于"toD"



我在spring boot上使用jboss fuse/camel 2.11,这是一个带有静态uri"to"的seda组件,用于设置seda的队列大小,下面是示例:

camel-context1.xml:

<to id="_toPreProcessor" uri="vm:request-preprocessor?size={{rest.queueSize}}"/>

camel-context2.xml:

<from id="_preprocessor-from" uri="vm:request-preprocessor"/>

但如果第一个上下文中的"to"改为"toD",如下所示:

<toD id="_toPreProcessor" uri="vm:request-preprocessor?size={{rest.queueSize}}"/>

将出现以下错误:

org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: vm://request-preprocessor?size=2 due to: Cannot use existing queue vm://request-preprocessor as the existing queue size 2147483647 does not match given queue size 2

我想知道为什么为seda配置大小可以用"to",但不能用"toD"。

不确定它是否有效,但您可以尝试在中间标头中构建完整的目标uri,然后将此标头用作toD uri:中的唯一令牌

<setHeader headerName="myDynamicUri">
<simple>vm:request-preprocessor?size={{rest.queueSize}}</simple>
</setHeader>
<log message="Dynamic URI: ${header.myDynamicUri}" loggingLevel="DEBUG"/>
<toD uri="${header.myDynamicUri}"/>

此问题已通过使用fuse7.0解决。