[ 
https://issues.apache.org/jira/browse/CAMEL-7003?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13850062#comment-13850062
 ] 

Jason Foster commented on CAMEL-7003:
-------------------------------------

Can you help me understand what from the amp spec leads you to belief it is not 
a good idea?  And why is it good for the consumer to do this and not the 
producer? If anything I would think it would be the other way around...

It's also not just amqp... This is a rabbit component not an amqp component 
(only) so I would think how rabbit behaves would be equally important... Eg 
black holing messages and no indication from this component that anything is 
amiss... 



Sent from my iPhone




> RabbitMQ Producer cannot create exchanges, queues
> -------------------------------------------------
>
>                 Key: CAMEL-7003
>                 URL: https://issues.apache.org/jira/browse/CAMEL-7003
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-rabbitmq
>    Affects Versions: 2.12.1
>         Environment: RabbitMQ 3.2.0 on CentOS 6.4 (running in VMWare 
> Workstation 9.0.2 build-1031769)
> Camel 2.12.1 running in Eclipse Helios on Windows 7
>            Reporter: Jason Foster
>            Assignee: Willem Jiang
>
> There doesn't seem to be a way to have the producer declare an exchange or a 
> queue.  The following route demonstrates this problem:
>               from("stream:in?promptMessage=Enter message payload: ")
>               
> .to("rabbitmq://<server>:<port>/direct?queue=defect&username=guest&password=guest");
> There also is no way for the producer to use the default exchange, (which has 
> no name).  You cannot set an exchange name as a header with an empty string, 
> and specifying 'direct' on the exchange uri also doesn't work.  However, the 
> consumer appears to work and will declare at least queues, even on the 
> default exchange.
> The producer appears to only work with previously declared exchanges and 
> queues, which isn't practical, especially in recovery situations, since you 
> cannot guarantee the order things will start (producer vs. consumer) and the 
> producer doesn't attempt any type of re-delivery in the case that the 
> exchange/queue doesn't exist, nor does it indicate via logging or exceptions 
> that there is a problem with delivery.
> In Rabbit, creating exchanges and queues are both idempotent operations, so 
> it wouldn't hurt to call the methods to declare the exchange and queue, 
> regardless of whether they previously existed.  If you set up an endpoint to 
> a non-existent queue and want to use the default direct exchange, you can't 
> do that with this component.  
> If an exchange and queue are created outside the component, (say by a 
> consumer or using rabbitmq management console) then the producer works 
> correctly.



--
This message was sent by Atlassian JIRA
(v6.1.4#6159)

Reply via email to