You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Claus Ibsen (JIRA)" <ji...@apache.org> on 2017/09/20 09:22:00 UTC

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

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

Claus Ibsen commented on CAMEL-11791:
-------------------------------------

Yeah sure we love contributions, so you are welcome to dive into the source code and try to improve this
http://camel.apache.org/contributing

> RabbitMQ Producer does not recover if exchange 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)