This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new 11e94b7efb4 CAMEL-17892: perform binding even when declarations were 
skipped (#7320)
11e94b7efb4 is described below

commit 11e94b7efb4667dd454370aec4e6b2951d6100f1
Author: Santiago Acosta <bilbolord2...@gmail.com>
AuthorDate: Mon Apr 4 06:07:40 2022 +0100

    CAMEL-17892: perform binding even when declarations were skipped (#7320)
    
    * CAMEL-17892: perform binding even when declarations were skipped
    
    * CAMEL-17892: fix an integration test
    
    * CAMEL-17892: fix broken checkstyle
    
    Co-authored-by: Santiago Acosta <santiago.aco...@intermodaltelematics.com>
---
 .../camel/component/rabbitmq/RabbitMQDeclareSupport.java | 16 ++++++++++++++++
 .../rabbitmq/integration/RabbitMQProducerIT.java         |  2 +-
 2 files changed, 17 insertions(+), 1 deletion(-)

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 d69c554d04c..8b7b56158b0 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
@@ -57,6 +57,11 @@ public class RabbitMQDeclareSupport {
             // declare
             declareAndBindQueue(channel, endpoint.getQueue(), 
endpoint.getExchangeName(), endpoint.getRoutingKey(),
                     resolvedQueueArguments(), endpoint.getBindingArgs());
+        } else if (shouldBindQueue()) {
+            // we skipped declarations because they should exist, but we still
+            // want to bind both. Forced passive declaration
+            passivelyDeclareExchangeAndQueueAndBindThem(channel, 
endpoint.getQueue(), endpoint.getExchangeName(),
+                    endpoint.getRoutingKey(), endpoint.getBindingArgs());
         }
     }
 
@@ -150,6 +155,17 @@ public class RabbitMQDeclareSupport {
         }
     }
 
+    private void passivelyDeclareExchangeAndQueueAndBindThem(
+            final Channel channel, final String queue, final String exchange, 
final String routingKey,
+            final Map<String, Object> bindingArgs)
+
+            throws IOException {
+
+        channel.exchangeDeclarePassive(exchange);
+        channel.queueDeclarePassive(queue);
+        channel.queueBind(queue, exchange, emptyIfNull(routingKey), 
bindingArgs);
+    }
+
     private String emptyIfNull(final String routingKey) {
         return routingKey == null ? "" : routingKey;
     }
diff --git 
a/components/camel-rabbitmq/src/test/java/org/apache/camel/component/rabbitmq/integration/RabbitMQProducerIT.java
 
b/components/camel-rabbitmq/src/test/java/org/apache/camel/component/rabbitmq/integration/RabbitMQProducerIT.java
index a44d38a8e3b..02bd32014b7 100644
--- 
a/components/camel-rabbitmq/src/test/java/org/apache/camel/component/rabbitmq/integration/RabbitMQProducerIT.java
+++ 
b/components/camel-rabbitmq/src/test/java/org/apache/camel/component/rabbitmq/integration/RabbitMQProducerIT.java
@@ -89,7 +89,7 @@ public class RabbitMQProducerIT extends AbstractRabbitMQIT {
     private String getBasicURI(String route) {
         ConnectionProperties connectionProperties = 
service.connectionProperties();
 
-        return 
String.format("rabbitmq:%s:%d/%s?routingKey=%s&username=%s&password=%s&skipQueueDeclare=true",
+        return 
String.format("rabbitmq:%s:%d/%s?routingKey=%s&username=%s&password=%s&skipQueueDeclare=true&skipQueueBind=true",
                 connectionProperties.hostname(), connectionProperties.port(),
                 EXCHANGE, route, connectionProperties.username(), 
connectionProperties.password());
     }

Reply via email to