I have a simple route in camel, which reads messages from an activemq queue 'A' and writes it to another activemq queue 'B'.I was able to get this to this part to work.

But I need to add a new property to the message before writing it to 'B'. I have tried to add the property 'prop1' to the message using the Spring DSL below, but the property is not being added to the message.

<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>

Is this the correct way to add a property to a message in SPRING DSL?

有帮助吗?

解决方案

Use a header instead of a property:

<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 headers are transferred to JMS properties which are transferred back to Camel headers as can be seen looking at the implementation of org.apache.camel.component.jms.JMSBinding. The Camel properties are skipped.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top