Even you specify the routingKey in the rabbitmq uri, camel cannot find out the 
exchange name without checking it from message header.
So you cannot comment out the exchange name setting part. 

--  
Willem Jiang


Blog: http://willemjiang.blogspot.com (English)  
http://jnn.iteye.com (Chinese)
Twitter: willemjiang  
Weibo: 姜宁willem



On September 21, 2016 at 5:14:54 AM, Emre Kartoglu Ismail 
(ismailemrekarto...@gmail.com) wrote:
> Hello Camel users,
>  
> I have a question regarding the camel-rabbitmq component. The following
> code sends the message “test” to exchange “A” with routing key “B” every
> 5 seconds:
>  
>  
> from("timer:test?period=5000").process(new Processor() {
> @Override
> public void process(Exchange exchange) throws Exception {
> exchange.getOut().setBody("test", String.class);
> exchange.getOut().getHeaders().put("rabbitmq.EXCHANGE_NAME", "A”); **
> exchange.getOut().getHeaders().put("rabbitmq.ROUTING_KEY", "B”); **
> }
> })
> .to("rabbitmq://localhost/A?username=guest&password=guest&routingKey=B&threadPoolSize=1&autoAck=false");
>   
>  
>  
>  
> However when I comment out the lines with **, the message does not get
> sent. Is this an expected behaviour? I found this stack overflow post,
> essentially discussing the same issue:
> http://stackoverflow.com/questions/22449086/apache-camel-rabbitmq-endpoint-not-creating
>   
> .
>  
> There is a paragraph at http://camel.apache.org/rabbitmq.html that says
>  
> "Headers are set by the consumer once the message is received. The
> producer will also set the headers for downstream processors once the
> exchange has taken place. Any headers set prior to production that the
> producer sets will be overridden.”
>  
> The last sentence seems to suggest that the behaviour I described here
> is expected. My question then is would it not make more sense if we did
> not have to specifically set the headers in the out message?
>  
>  
> Kind regards,
> Ismail
>  

Reply via email to