camel-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jason Foster (JIRA)" <>
Subject [jira] [Commented] (CAMEL-7003) RabbitMQ Producer cannot create exchanges, queues
Date Tue, 17 Dec 2013 03:29:07 GMT


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:
>             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
> 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

View raw message