Hardening stuff a little bit .. following sugestions by @pcan Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/7ee0977c Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/7ee0977c Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/7ee0977c
Branch: refs/heads/master Commit: 7ee0977c9f5c327a95122f5b80202dc5dd872e40 Parents: 6c69384 Author: miti <pric...@textkernel.nl> Authored: Tue Aug 16 10:03:39 2016 +0200 Committer: Claus Ibsen <davscl...@apache.org> Committed: Tue Aug 16 16:23:20 2016 +0200 ---------------------------------------------------------------------- .../component/rabbitmq/RabbitConsumer.java | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/7ee0977c/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitConsumer.java ---------------------------------------------------------------------- diff --git a/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitConsumer.java b/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitConsumer.java index d143d9b..93e2499 100644 --- a/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitConsumer.java +++ b/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitConsumer.java @@ -65,10 +65,16 @@ class RabbitConsumer implements com.rabbitmq.client.Consumer { if (!consumer.getEndpoint().isAutoAck()) { lock.acquire(); } - doHandleDelivery(consumerTag, envelope, properties, body); - if (!consumer.getEndpoint().isAutoAck()) { - lock.release(); - } + //Channel might be open because while we were waiting for the lock, stop() has been succesfully called. + if (!channel.isOpen()) return; + + try { + doHandleDelivery(consumerTag, envelope, properties, body); + } finally { + if (!consumer.getEndpoint().isAutoAck()) { + lock.release(); + } + } } catch (InterruptedException e) { log.error("Thread Interrupted!"); @@ -184,13 +190,15 @@ class RabbitConsumer implements com.rabbitmq.client.Consumer { if (isChannelOpen()) { channel.close(); } - lock.release(); } catch (TimeoutException e) { log.error("Timeout occured"); throw e; } catch (InterruptedException e1) { log.error("Thread Interrupted!"); - } + } finally { + lock.release(); + + } } /**