【问题标题】:CAMEL: Adding Properties to a message in Spring DSLCAMEL:在 Spring DSL 中向消息添加属性
【发布时间】:2014-03-21 14:36:13
【问题描述】:

我在骆驼中有一个简单的路由,它从 activemq 队列“A”读取消息并将其写入另一个 activemq 队列“B”。我能够让这部分工作。

但是在将消息写入“B”之前,我需要在消息中添加一个新属性。我尝试使用下面的 Spring DSL 将属性“prop1”添加到消息中,但该属性未添加到消息中。

<camelContext xmlns="http://camel.apache.org/schema/spring">
     <route>
        <from uri="activemq:queue:A"/>
          <setProperty propertyName="prop1">
            <simple>prop1Value</simple>
          </setProperty>
        <to uri="activemq:queue:B"/>
     </route>               
  </camelContext>

这是在 SPRING DSL 中向消息添加属性的正确方法吗?

【问题讨论】:

    标签: java spring jms apache-camel activemq


    【解决方案1】:

    使用标题而不是属性:

    <route>
        <from uri="activemq:queue:A"/>
        <setHeader headerName="prop1">
            <constant>prop1Value</constant>
        </setHeader>
        <to uri="activemq:queue:B"/>
    </route>               
    <route>
        <from uri="activemq:queue:B" />
        <log message="prop1 = ${header.prop1}" />
    </route>
    

    Camel 标头被传输到 JMS 属性,这些属性被传输回 Camel 标头,如查看 org.apache.camel.component.jms.JMSBinding 的实现所示。骆驼属性被跳过。

    【讨论】:

    • 感谢您的回复。但是,骆驼不区分消息头和消息属性吗?为什么camel将“prop1”视为标头,而activemq将其视为消息的属性?
    • 我添加了一个指向 JMSBinding 的链接,在该链接中完成了所有数据传输。有关标头和属性之间的比较,请参阅stackoverflow.com/questions/10330998/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-14
    • 2015-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多