CAMEL-8302: Added skipQueueDeclare flag to camel-rabbitmq
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/73584d28 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/73584d28 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/73584d28 Branch: refs/heads/camel-2.16.x Commit: 73584d289a6d6ee62cf60053512a0c534d9c6832 Parents: e6a6ef8 Author: davidwilliams <da...@getgathering.com> Authored: Wed Nov 11 14:11:36 2015 -0500 Committer: Claus Ibsen <davscl...@apache.org> Committed: Fri Nov 13 16:12:02 2015 +0100 ---------------------------------------------------------------------- .../camel/component/rabbitmq/RabbitMQEndpoint.java | 16 +++++++++++++++- .../component/rabbitmq/RabbitMQEndpointTest.java | 6 ++++++ 2 files changed, 21 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/73584d28/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQEndpoint.java ---------------------------------------------------------------------- diff --git a/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQEndpoint.java b/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQEndpoint.java index 50aebd2..ff57d7b 100644 --- a/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQEndpoint.java +++ b/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQEndpoint.java @@ -95,6 +95,8 @@ public class RabbitMQEndpoint extends DefaultEndpoint { private String exchangeType = "direct"; @UriParam private String routingKey; + @UriParam(defaultValue = "false") + private boolean skipQueueDeclare = false; @UriParam private Address[] addresses; @UriParam(defaultValue = "" + ConnectionFactory.DEFAULT_CONNECTION_TIMEOUT) @@ -369,7 +371,7 @@ public class RabbitMQEndpoint extends DefaultEndpoint { getExchangeType(), isDurable(), isAutoDelete(), exchangeArgs); - if (getQueue() != null) { + if (!isSkipQueueDeclare() && getQueue() != null) { // need to make sure the queueDeclare is same with the exchange declare channel.queueDeclare(getQueue(), isDurable(), false, isAutoDelete(), queueArgs); @@ -588,6 +590,18 @@ public class RabbitMQEndpoint extends DefaultEndpoint { } /** + * If true the producer will not declare and bind a queue. + * This can be used for directing messages via an existing routing key. + */ + public void setSkipQueueDeclare(boolean skipQueueDeclare) { + this.skipQueueDeclare = skipQueueDeclare; + } + + public boolean isSkipQueueDeclare() { + return skipQueueDeclare; + } + + /** * If the bridgeEndpoint is true, the producer will ignore the message header of "rabbitmq.EXCHANGE_NAME" and "rabbitmq.ROUTING_KEY" */ public void setBridgeEndpoint(boolean bridgeEndpoint) { http://git-wip-us.apache.org/repos/asf/camel/blob/73584d28/components/camel-rabbitmq/src/test/java/org/apache/camel/component/rabbitmq/RabbitMQEndpointTest.java ---------------------------------------------------------------------- diff --git a/components/camel-rabbitmq/src/test/java/org/apache/camel/component/rabbitmq/RabbitMQEndpointTest.java b/components/camel-rabbitmq/src/test/java/org/apache/camel/component/rabbitmq/RabbitMQEndpointTest.java index ad9aca8..a3290c9 100644 --- a/components/camel-rabbitmq/src/test/java/org/apache/camel/component/rabbitmq/RabbitMQEndpointTest.java +++ b/components/camel-rabbitmq/src/test/java/org/apache/camel/component/rabbitmq/RabbitMQEndpointTest.java @@ -248,4 +248,10 @@ public class RabbitMQEndpointTest extends CamelTestSupport { RabbitMQEndpoint endpoint = context.getEndpoint("rabbitmq:localhost/exchange?requestTimeoutCheckerInterval=1000", RabbitMQEndpoint.class); assertEquals(1000, endpoint.getRequestTimeoutCheckerInterval()); } + + @Test + public void createEndpointWithSkipQueueDeclareEnabled() throws Exception { + RabbitMQEndpoint endpoint = context.getEndpoint("rabbitmq:localhost/exchange?skipQueueDeclare=true", RabbitMQEndpoint.class); + assertTrue(endpoint.isSkipQueueDeclare()); + } }