CAMEL-9815 Add URI parameter to skip declaration of exchange
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/1c710c4b Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/1c710c4b Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/1c710c4b Branch: refs/heads/camel-2.17.x Commit: 1c710c4bae03012d92daef294f63ab350c4e78fa Parents: 8cb6917 Author: Fabian Chanton <fabian.chan...@misurio.ch> Authored: Tue Apr 5 11:21:06 2016 +0200 Committer: Claus Ibsen <davscl...@apache.org> Committed: Wed Apr 6 07:25:17 2016 +0200 ---------------------------------------------------------------------- .../component/rabbitmq/RabbitMQDeclareSupport.java | 8 +++++++- .../camel/component/rabbitmq/RabbitMQEndpoint.java | 14 ++++++++++++++ .../component/rabbitmq/RabbitMQEndpointTest.java | 6 ++++++ 3 files changed, 27 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/1c710c4b/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQDeclareSupport.java ---------------------------------------------------------------------- diff --git a/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQDeclareSupport.java b/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQDeclareSupport.java index aa4df2f..2539d50 100644 --- a/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQDeclareSupport.java +++ b/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQDeclareSupport.java @@ -45,7 +45,9 @@ public class RabbitMQDeclareSupport { } private void declareAndBindExchangeWithQueue(final Channel channel) throws IOException { - declareExchange(channel, endpoint.getExchangeName(), endpoint.getExchangeType(), resolvedExchangeArguments()); + if(shouldDeclareExchange()){ + declareExchange(channel, endpoint.getExchangeName(), endpoint.getExchangeType(), resolvedExchangeArguments()); + } if (shouldDeclareQueue()) { // need to make sure the queueDeclare is same with the exchange declare @@ -80,6 +82,10 @@ public class RabbitMQDeclareSupport { private boolean shouldDeclareQueue() { return !endpoint.isSkipQueueDeclare() && endpoint.getQueue() != null; } + + private boolean shouldDeclareExchange() { + return !endpoint.isSkipExchangeDeclare(); + } private void populateQueueArgumentsFromConfigurer(final Map<String, Object> queueArgs) { if (endpoint.getQueueArgsConfigurer() != null) { http://git-wip-us.apache.org/repos/asf/camel/blob/1c710c4b/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 3600d33..4293ca7 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 @@ -80,6 +80,8 @@ public class RabbitMQEndpoint extends DefaultEndpoint { @UriParam(label = "producer") private boolean skipQueueDeclare; @UriParam + private boolean skipExchangeDeclare; + @UriParam private Address[] addresses; @UriParam(defaultValue = "" + ConnectionFactory.DEFAULT_CONNECTION_TIMEOUT) private int connectionTimeout = ConnectionFactory.DEFAULT_CONNECTION_TIMEOUT; @@ -403,6 +405,18 @@ public class RabbitMQEndpoint extends DefaultEndpoint { public boolean isSkipQueueDeclare() { return skipQueueDeclare; } + + /** + * If true the producer will not declare the exchange. + * This can be used if we need to declare the queue but not the exchange + */ + public void setSkipExchangeDeclare(boolean skipExchangeDeclare) { + this.skipExchangeDeclare = skipExchangeDeclare; + } + + public boolean isSkipExchangeDeclare() { + return skipExchangeDeclare; + } /** * If the bridgeEndpoint is true, the producer will ignore the message header of "rabbitmq.EXCHANGE_NAME" and "rabbitmq.ROUTING_KEY" http://git-wip-us.apache.org/repos/asf/camel/blob/1c710c4b/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 a3290c9..291c907 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 @@ -254,4 +254,10 @@ public class RabbitMQEndpointTest extends CamelTestSupport { RabbitMQEndpoint endpoint = context.getEndpoint("rabbitmq:localhost/exchange?skipQueueDeclare=true", RabbitMQEndpoint.class); assertTrue(endpoint.isSkipQueueDeclare()); } + + @Test + public void createEndpointWithSkipExchangeDeclareEnabled() throws Exception { + RabbitMQEndpoint endpoint = context.getEndpoint("rabbitmq:localhost/exchange?skipExchangeDeclare=true", RabbitMQEndpoint.class); + assertTrue(endpoint.isSkipExchangeDeclare()); + } }