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