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