[
https://issues.apache.org/activemq/browse/CAMEL-1867?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=53045#action_53045
]
Mark White commented on CAMEL-1867:
-----------------------------------
Here is the Spring bean configuration we use to test;
<bean id="ConnectionFactory"
class="org.apache.activemq.pool.PooledConnectionFactory" destroy-method="stop">
<property name="connectionFactory">
<bean
class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL"
value="failover:tcp://localhost:61616"/>
</bean>
</property>
</bean>
<bean id="PassThroughHeader"
class="org.apache.camel.component.jms.PassThroughJmsKeyFormatStrategy"/>
<bean id="jmsConfig"
class="org.apache.camel.component.jms.JmsConfiguration">
<property name="connectionFactory" ref="ConnectionFactory"/>
<property name="jmsKeyFormatStrategy" ref="PassThroughHeader"/>
<property name="explicitQosEnabled" value="true"/>
<property name="deliveryPersistent" value="false"/>
<property name="concurrentConsumers" value="1"/>
</bean>
<bean id="jms" class="org.apache.camel.component.jms.JmsComponent">
<property name="configuration" ref="jmsConfig"/>
</bean>
> JmsKeyFormatStrategy not used consistently and JmsMessage.getHeader() not
> returning correct value
> -------------------------------------------------------------------------------------------------
>
> Key: CAMEL-1867
> URL: https://issues.apache.org/activemq/browse/CAMEL-1867
> Project: Apache Camel
> Issue Type: Bug
> Components: camel-jms
> Affects Versions: 2.0-M3
> Environment: 2.0-M3
> Reporter: Mark White
>
> On entry to a route from a JMS endpoint configured with
> PassthroughJmsKeyFormatStrategy the headers with underscores (_) are passed
> through correctly.
> However, when any header value in the message is then changed, the original
> headers are added back into the message using the
> DefaultJmsKeyFormatStrategy. For example, sending a JMS message with headers;
> HEADER_1=VALUE_1
> HEADER_2=VALUE_1
> we do see just these two headers in the message received into the route.
> However, if we then set a header value in the route, say HEADER_1=VALUE_2, we
> now see the headers;
> HEADER.1=VALUE_1
> HEADER.2=VALUE_1
> HEADER_1=VALUE_2
> HEADER_2=VALUE_1
> For some reason in the set header process the original message headers and
> values get added into the message after being passed through the
> DefaultJmsKeyFormatStrategy. This has the implication of unnecessary
> duplication of the headers.
> Also, when a message header is accessed using the getHeader(key) method it
> also goes through the DefaultJmsKeyFormatStrategy to decode the key that is
> passed.
> In the example above, if after we have updated 'HEADER_1' to 'VALUE_2', we do;
> message.getHeader("HEADER_1") this goes through the
> DefaultJmsKeyFormatStrategy and actually gets executed as
> message.getHeader("HEADER.1") which returns VALUE_1 (wrong!).
> Note: if instead we lookup the header through message.getHeaders() which
> returns the all headers in a Map, we can correctly access the 'HEADER_1' key.
> (Why is getHeader(key) even going through the KeyFormatStrategy anyway if
> setHeader() isn't?)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.