[
https://issues.apache.org/jira/browse/CAMEL-12471?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16693381#comment-16693381
]
Anton Koscejev commented on CAMEL-12471:
----------------------------------------
The {{EXCHANGE_OVERRIDE_NAME}} header is first handled (and removed to avoid
propagation) in {{RabbitMQProducer}}, but is subsequently completely ignored -
see {{rabbitExchange}} parameter:
{code:java}
/**
* Send a message borrowing a channel from the pool.
*/
private void basicPublish(final Exchange camelExchange, final String
rabbitExchange, final String routingKey) throws Exception {
if (channelPool == null) {
// Open connection and channel lazily if another thread hasn't
checkConnectionAndChannelPool();
}
execute(new ChannelCallback<Void>() {
@Override
public Void doWithChannel(Channel channel) throws Exception {
getEndpoint().publishExchangeToChannel(camelExchange, channel,
routingKey);
return null;
}
});
}
{code}
The 2nd time this header is checked in
{{RabbitMQMessagePublisher#publishToRabbitMQ}}, but by that time it's already
removed by RabbitMQProducer, so it can actually never be there. This means the
header basically doesn't do anything.
> Dots in RabbitMQ-component headers do not work
> ----------------------------------------------
>
> Key: CAMEL-12471
> URL: https://issues.apache.org/jira/browse/CAMEL-12471
> Project: Camel
> Issue Type: Bug
> Components: camel-rabbitmq
> Affects Versions: 2.21.0
> Reporter: Peter
> Priority: Minor
>
> Setting Exchange headers does not work for all the constants. E.g.:
> .setHeader(RabbitMQConstants.DELIVERY_MODE, constant("2"))
> .setHeader(RabbitMQConstants.EXCHANGE_OVERRIDE_NAME, constant("test"))
> .setHeader(RabbitMQConstants.ROUTING_KEY, simple("${header.msgType}"))
> Only the header for routingkey is set as header. If I set the headers like
> this, so without using a dot (.) then all get set, but are useless ofcourse:
> .setHeader("rabbitmq_DELIVERY_MODE", constant("2"))
> .setHeader("rabbitmq_EXCHANGE_OVERRIDE_NAME", constant("test"))
> .setHeader(RabbitMQConstants.ROUTING_KEY, simple("${header.msgType}"))
> So only the ROUTING_KEY header exists in the function "publishToRabbitMQ" of
> the "RabbitMQMessagePublisher".
> I'm still checking but for now I have no idea why the header for the
> routingkey is working as expected but the others not.
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)