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

Reply via email to