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

时间:2018-07-11 15:25:18

标签: apache-camel jbossfuse

我在春季启动时使用jboss保险丝/骆驼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”。

2 个答案:

答案 0 :(得分:0)

不确定它是否有效,但是您可以尝试在中间标头中构建完整的目标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}"/>

答案 1 :(得分:0)

使用fuse7.0解决了此问题。