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

Claus Ibsen commented on CAMEL-16707:
-------------------------------------

You are welcome to test with Camel 3.10.0 and also if still a bug, then try to 
fix and send a PR.
Also try testing with camel-spring-rabbitmq as its a better component than this.

> camel-rabbitmq connection leak on error during 'declare'
> --------------------------------------------------------
>
>                 Key: CAMEL-16707
>                 URL: https://issues.apache.org/jira/browse/CAMEL-16707
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-rabbitmq
>    Affects Versions: 3.6.0
>            Reporter: Rastislav Papp
>            Priority: Major
>
> camel-rabbitmq component causes a connection leak when there is an error 
> during declaration of exchanges/queues (e.g. when an exchange with the same 
> name but different type already exists).
> Problem lies in {{org.apache.camel.component.rabbitmq.RabbitConsumer}}:
> {code:java}
>     RabbitConsumer(RabbitMQConsumer consumer) {
>         // super(channel);
>         this.consumer = consumer;
>         try {
>             Connection conn = consumer.getConnection();
>             this.channel = openChannel(conn);
>         } catch (IOException | TimeoutException e) {
>             LOG.warn("Unable to open channel for RabbitMQConsumer. Continuing 
> and will try again", e);
>         }
>     }
>     //...
>     private Channel openChannel(Connection conn) throws IOException {
>         Channel channel = //... channel gets created
>         //...
>         if (consumer.getEndpoint().isDeclare()) {
>             consumer.getEndpoint().declareExchangeAndQueue(channel);
>         }
>         return channel;
>     }
> {code}
> if {{declareExchangeAndQueue}} gets called, and if it throws an exception 
> (e.g. because the exchange is already declared with different configuration) 
> the exception is caught and consumed in the constructor, and the channel is 
> never closed. I think the exception should be propagated in this case, 
> because it is not recoverable (or at least there should be an option for 
> this). It would also cause the app startup to fail, which would be a good 
> thing in this case.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to