質問

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