You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2017/09/25 18:52:02 UTC

[jira] [Commented] (CAMEL-11791) RabbitMQ Producer does not recover if exchange or queue is deleted manually

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

ASF GitHub Bot commented on CAMEL-11791:
----------------------------------------

GitHub user hveiga opened a pull request:

    https://github.com/apache/camel/pull/1957

    CAMEL-11791: Enhanced reconnection for rabbitmq consumer and producer…

    … (including queue/exchange deletion)

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/hveiga/camel master

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/camel/pull/1957.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #1957
    
----
commit 79dadaa8ec98c3ab23dbb5b17bae3ade816bbf52
Author: Veiga Ortiz, Héctor <he...@here.com>
Date:   2017-09-25T18:47:18Z

    CAMEL-11791: Enhanced reconnection for rabbitmq consumer and producer (including queue/exchange deletion)

----


> RabbitMQ Producer does not recover if exchange or queue is deleted manually
> ---------------------------------------------------------------------------
>
>                 Key: CAMEL-11791
>                 URL: https://issues.apache.org/jira/browse/CAMEL-11791
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-rabbitmq
>    Affects Versions: 2.19.2
>            Reporter: Hector Veiga
>
> While trying different recovering scenarios with camel-rabbitmq we tried to delete the exchange where the producer was sending RabbitMQ messages to.
> We observed that the exchange was never recreated again as well as no new channel were created in the channel pool. Every time a channel was used to send a non-existent exchange, the channel was closed and we got a log saying "Got a closed channel from the pool". Once it ran out of channels in the pool, we keep getting the same exception when a new message tries to be sent to the exchange:
> {noformat}
> Caused by: java.util.NoSuchElementException: Timeout waiting for idle object
> at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1174) ~[commons-pool-1.6.jar:1.6]
> {noformat}
> We are using a InOnly producer and the options we are using are: 
> {noformat}
> rabbitmq://somehose:someport/some_exchange?username=SomeApp&password=SomeApp&skipQueueDeclare=true&exchangeType=headers&automaticRecoveryEnabled=true&topologyRecoveryEnabled=true
> {noformat}
> It seems the code never catches a Exception thrown by channel.basicPublish(...) in RabbitMQMessagePublisher. Maybe we could catch if the issue is that the exchange got deleted and run the exchange declaration again?



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)