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

btellier pushed a commit to branch 3.7.x
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit c5f5d33c8f39067e71484d8d3a9306b0fd831ba0
Author: Rene Cordier <rcord...@linagora.com>
AuthorDate: Thu Sep 29 17:53:43 2022 +0700

    JAMES-3604 Fix issue when creating quorum rabbitmq queues
    
    We can't create a quorum queue and mark it as auto-delete, RabbitMQ does 
not allow it. So we keep the jmap event bus notification queues as classic for 
now.
---
 .../org/apache/james/backends/rabbitmq/RabbitMQConfiguration.java     | 4 ++--
 .../src/main/java/org/apache/james/events/GroupRegistration.java      | 2 +-
 .../main/java/org/apache/james/events/GroupRegistrationHandler.java   | 2 +-
 .../src/main/java/org/apache/james/events/KeyReconnectionHandler.java | 2 +-
 .../src/main/java/org/apache/james/events/KeyRegistrationHandler.java | 2 +-
 .../org/apache/james/queue/rabbitmq/RabbitMQMailQueueFactory.java     | 2 +-
 6 files changed, 7 insertions(+), 7 deletions(-)

diff --git 
a/backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/RabbitMQConfiguration.java
 
b/backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/RabbitMQConfiguration.java
index 48588d478b..e98f142555 100644
--- 
a/backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/RabbitMQConfiguration.java
+++ 
b/backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/RabbitMQConfiguration.java
@@ -722,9 +722,9 @@ public class RabbitMQConfiguration {
         return sslConfiguration;
     }
 
-    public QueueArguments.Builder workQueueArgumentsBuilder() {
+    public QueueArguments.Builder workQueueArgumentsBuilder(boolean 
autoDeleteQueue) {
         QueueArguments.Builder builder = QueueArguments.builder();
-        if (useQuorumQueues) {
+        if (!autoDeleteQueue && useQuorumQueues) {
             
builder.quorumQueue().replicationFactor(quorumQueueReplicationFactor);
         }
         queueTTL.ifPresent(builder::queueTTL);
diff --git 
a/event-bus/distributed/src/main/java/org/apache/james/events/GroupRegistration.java
 
b/event-bus/distributed/src/main/java/org/apache/james/events/GroupRegistration.java
index bd1a9d3398..794a60e59b 100644
--- 
a/event-bus/distributed/src/main/java/org/apache/james/events/GroupRegistration.java
+++ 
b/event-bus/distributed/src/main/java/org/apache/james/events/GroupRegistration.java
@@ -128,7 +128,7 @@ class GroupRegistration implements Registration {
                 .durable(DURABLE)
                 .exclusive(!EXCLUSIVE)
                 .autoDelete(!AUTO_DELETE)
-                .arguments(configuration.workQueueArgumentsBuilder()
+                
.arguments(configuration.workQueueArgumentsBuilder(!AUTO_DELETE)
                     .deadLetter(namingStrategy.deadLetterExchange())
                     .build()));
     }
diff --git 
a/event-bus/distributed/src/main/java/org/apache/james/events/GroupRegistrationHandler.java
 
b/event-bus/distributed/src/main/java/org/apache/james/events/GroupRegistrationHandler.java
index def37aa477..74c6ca0974 100644
--- 
a/event-bus/distributed/src/main/java/org/apache/james/events/GroupRegistrationHandler.java
+++ 
b/event-bus/distributed/src/main/java/org/apache/james/events/GroupRegistrationHandler.java
@@ -104,7 +104,7 @@ class GroupRegistrationHandler {
                 .durable(DURABLE)
                 .exclusive(!EXCLUSIVE)
                 .autoDelete(!AUTO_DELETE)
-                .arguments(configuration.workQueueArgumentsBuilder()
+                
.arguments(configuration.workQueueArgumentsBuilder(!AUTO_DELETE)
                     .deadLetter(namingStrategy.deadLetterExchange())
                     .build()),
             BindingSpecification.binding()
diff --git 
a/event-bus/distributed/src/main/java/org/apache/james/events/KeyReconnectionHandler.java
 
b/event-bus/distributed/src/main/java/org/apache/james/events/KeyReconnectionHandler.java
index 95e6810c1e..cd8b1f21e2 100644
--- 
a/event-bus/distributed/src/main/java/org/apache/james/events/KeyReconnectionHandler.java
+++ 
b/event-bus/distributed/src/main/java/org/apache/james/events/KeyReconnectionHandler.java
@@ -55,7 +55,7 @@ public class KeyReconnectionHandler implements 
SimpleConnectionPool.Reconnection
         return Mono.fromRunnable(() -> {
             try (Channel channel = connection.createChannel()) {
                 
channel.queueDeclare(namingStrategy.queueName(eventBusId).asString(), DURABLE, 
!EXCLUSIVE, AUTO_DELETE,
-                    configuration.workQueueArgumentsBuilder().build());
+                    
configuration.workQueueArgumentsBuilder(AUTO_DELETE).build());
             } catch (Exception e) {
                 LOGGER.error("Error recovering connection", e);
             }
diff --git 
a/event-bus/distributed/src/main/java/org/apache/james/events/KeyRegistrationHandler.java
 
b/event-bus/distributed/src/main/java/org/apache/james/events/KeyRegistrationHandler.java
index ae693fc9e5..ae616bcbaa 100644
--- 
a/event-bus/distributed/src/main/java/org/apache/james/events/KeyRegistrationHandler.java
+++ 
b/event-bus/distributed/src/main/java/org/apache/james/events/KeyRegistrationHandler.java
@@ -122,7 +122,7 @@ class KeyRegistrationHandler {
                 .durable(DURABLE)
                 .exclusive(!EXCLUSIVE)
                 .autoDelete(AUTO_DELETE)
-                .arguments(configuration.workQueueArgumentsBuilder().build()))
+                
.arguments(configuration.workQueueArgumentsBuilder(AUTO_DELETE).build()))
             .timeout(TOPOLOGY_CHANGES_TIMEOUT)
             .map(AMQP.Queue.DeclareOk::getQueue)
             .retryWhen(Retry.backoff(retryBackoff.getMaxRetries(), 
retryBackoff.getFirstBackoff()).jitter(retryBackoff.getJitterFactor()))
diff --git 
a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueFactory.java
 
b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueFactory.java
index ac8ae2490c..7a66cef269 100644
--- 
a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueFactory.java
+++ 
b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueFactory.java
@@ -167,7 +167,7 @@ public class RabbitMQMailQueueFactory implements 
MailQueueFactory<RabbitMQMailQu
                 .durable(DURABLE)
                 .exclusive(!EXCLUSIVE)
                 .autoDelete(!AUTO_DELETE)
-                .arguments(configuration.workQueueArgumentsBuilder()
+                
.arguments(configuration.workQueueArgumentsBuilder(!AUTO_DELETE)
                     .deadLetter(mailQueueName.toDeadLetterExchangeName())
                     .build())),
             
sender.declareQueue(QueueSpecification.queue(mailQueueName.toDeadLetterQueueName())


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org
For additional commands, e-mail: notifications-h...@james.apache.org

Reply via email to