Apache camel 驼峰:在多个路由中使用头值
是否可以在一条路由中设置一个标头,然后在同一上下文中的另一条路由中再次使用它?Apache camel 驼峰:在多个路由中使用头值,apache-camel,messaging,Apache Camel,Messaging,是否可以在一条路由中设置一个标头,然后在同一上下文中的另一条路由中再次使用它? 例如,我有一个路由,它将头设置为: <setHeader headerName="clientId"> <xpath>/Alarm/clientid/text()</xpath> </setHeader> /报警/clientid/text() 当传递失败时,路由使用死信通道将消息发送到同一上下文中的错误路由,我希望使用错误路由发送的消息中我在上面定义的cl
例如,我有一个路由,它将头设置为:
<setHeader headerName="clientId">
<xpath>/Alarm/clientid/text()</xpath>
</setHeader>
/报警/clientid/text()
当传递失败时,路由使用死信通道将消息发送到同一上下文中的错误路由,我希望使用错误路由发送的消息中我在上面定义的clientId头,但当前调用头不会返回任何结果(我假设为空字符串)。它应该可以工作,我使用的是camel 2.15.1,检查下面的代码,如果您运行它,您应该会看到标题
<bean id="mybean" class="java.lang.Exception" />
<camel:camelContext xmlns="http://camel.apache.org/schema/spring"
trace="false">
<camel:errorHandler id="deadLetterErrorHandler"
type="DeadLetterChannel" deadLetterUri="direct:b">
</camel:errorHandler>
<camel:route>
<camel:from uri="timer:foo?repeatCount=1" />
<camel:setHeader headerName="myheader">
<camel:simple>Sundar</camel:simple>
</camel:setHeader>
<camel:to uri="direct:a" />
</camel:route>
<camel:route errorHandlerRef="deadLetterErrorHandler">
<camel:from uri="direct:a" />
<camel:throwException ref="mybean"></camel:throwException>
</camel:route>
<camel:route>
<camel:from uri="direct:b" />
<camel:log message="${in.header.myheader}"/>
</camel:route>
</camel:camelContext>
只要你不做任何与交流这应该工作。我在自己的代码中使用了这一点。您的回答是正确的,但我的情况不同(抱歉,我在问题中没有正确描述)。在我的示例中,我将消息从第一个路由发送到一个队列,在bean中从该队列消费消息,然后将消息发送到另一个路由。问题是我没有在java中设置头
24 Feb 2016 19:09:47,707 route3 INFO Sundar