JAMES-3454 Make RegistrationQueueName immutable
We rely on an already known queue name, based in the EventBusId
diff --git a/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/KeyRegistrationHandler.java b/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/KeyRegistrationHandler.java
index bc72087..db52aa9 100644
--- a/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/KeyRegistrationHandler.java
+++ b/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/KeyRegistrationHandler.java
@@ -28,7 +28,6 @@
import java.time.Duration;
import java.util.Map;
import java.util.Optional;
-import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.Predicate;
import org.apache.james.backends.rabbitmq.ReceiverProvider;
@@ -72,7 +71,6 @@
private final MailboxListenerExecutor mailboxListenerExecutor;
private final RetryBackoffConfiguration retryBackoff;
private Optional<Disposable> receiverSubscriber;
- private AtomicBoolean registrationQueueInitialized = new AtomicBoolean(false);
KeyRegistrationHandler(EventBusId eventBusId, EventSerializer eventSerializer,
Sender sender, ReceiverProvider receiverProvider,
@@ -86,7 +84,7 @@
this.receiver = receiverProvider.createReceiver();
this.mailboxListenerExecutor = mailboxListenerExecutor;
this.retryBackoff = retryBackoff;
- this.registrationQueue = new RegistrationQueueName();
+ this.registrationQueue = new RegistrationQueueName(EVENTBUS_QUEUE_NAME_PREFIX + eventBusId.asString());
this.registrationBinder = new RegistrationBinder(sender, registrationQueue);
this.receiverSubscriber = Optional.empty();
@@ -116,12 +114,6 @@
.timeout(TOPOLOGY_CHANGES_TIMEOUT)
.map(AMQP.Queue.DeclareOk::getQueue)
.retryWhen(Retry.backoff(retryBackoff.getMaxRetries(), retryBackoff.getFirstBackoff()).jitter(retryBackoff.getJitterFactor()))
- .doOnSuccess(queueName -> {
- if (!registrationQueueInitialized.get()) {
- registrationQueue.initialize(queueName);
- registrationQueueInitialized.set(true);
- }
- })
.block();
}
diff --git a/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/RegistrationQueueName.java b/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/RegistrationQueueName.java
index 0854122..33c837b 100644
--- a/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/RegistrationQueueName.java
+++ b/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/RegistrationQueueName.java
@@ -19,24 +19,14 @@
package org.apache.james.mailbox.events;
-import java.util.Optional;
-
-import com.google.common.base.Preconditions;
-
class RegistrationQueueName {
- private Optional<String> queueName;
+ private final String queueName;
- RegistrationQueueName() {
- this.queueName = Optional.empty();
- }
-
- void initialize(String queueName) {
- Preconditions.checkNotNull(queueName);
- Preconditions.checkState(!this.queueName.isPresent(), "'queueName' must be empty for initializing");
- this.queueName = Optional.of(queueName);
+ RegistrationQueueName(String queueName) {
+ this.queueName = queueName;
}
String asString() {
- return queueName.orElseThrow(() -> new IllegalStateException("'queueName' is not yet initialized"));
+ return queueName;
}
}