是否可以在一条路线中设置标题,然后在同一上下文中的另一条路线中再次使用它? 例如,我有一个设置标题的路由:
<setHeader headerName="clientId">
<xpath>/Alarm/clientid/text()</xpath>
</setHeader>
当传递失败时,路由使用死信通道将消息发送到同一上下文中的错误路由,并且我想在错误路由发送的消息中使用我在上面定义的clientId头,但是当前调用头返回什么都没有(我假设是一个空字符串)。
答案 0 :(得分:1)
它应该可以工作,我使用的是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>
它应该打印如下所示的日志
24 Feb 2016 19:09:47,707 route3 INFO Sundar