You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2019/01/23 10:41:26 UTC

[10/13] james-project git commit: MAILBOX-376 Metrics for RabbitMQ event-bus listener execution time

MAILBOX-376 Metrics for RabbitMQ event-bus listener execution time


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/21603694
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/21603694
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/21603694

Branch: refs/heads/master
Commit: 21603694c754c93347bc0c29162dca73d9ee2b31
Parents: 97b33f8
Author: Benoit Tellier <bt...@linagora.com>
Authored: Wed Jan 23 15:10:45 2019 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Wed Jan 23 17:40:01 2019 +0700

----------------------------------------------------------------------
 .../apache/james/mailbox/events/EventBus.java   |  6 +++
 .../events/delivery/InVmEventDelivery.java      |  5 +-
 mailbox/event/event-rabbitmq/pom.xml            |  4 ++
 .../james/mailbox/events/EventDispatcher.java   | 17 +++----
 .../james/mailbox/events/GroupRegistration.java | 18 +++----
 .../events/GroupRegistrationHandler.java        |  7 ++-
 .../mailbox/events/KeyRegistrationHandler.java  | 17 +++----
 .../mailbox/events/MailboxListenerExecutor.java | 52 ++++++++++++++++++++
 .../james/mailbox/events/RabbitMQEventBus.java  | 11 +++--
 .../mailbox/events/RabbitMQEventBusTest.java    |  3 +-
 10 files changed, 102 insertions(+), 38 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/21603694/mailbox/api/src/main/java/org/apache/james/mailbox/events/EventBus.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/events/EventBus.java b/mailbox/api/src/main/java/org/apache/james/mailbox/events/EventBus.java
index 2563fa6..2333736 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/events/EventBus.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/events/EventBus.java
@@ -39,6 +39,12 @@ public interface EventBus {
         String REGISTRATION_KEY = "registrationKey";
     }
 
+    interface Metrics {
+        static String timerName(MailboxListener mailboxListener) {
+            return "mailbox-listener-" + mailboxListener.getClass().getSimpleName();
+        }
+    }
+
     Registration register(MailboxListener listener, RegistrationKey key);
 
     Registration register(MailboxListener listener, Group group) throws GroupAlreadyRegistered;

http://git-wip-us.apache.org/repos/asf/james-project/blob/21603694/mailbox/event/event-memory/src/main/java/org/apache/james/mailbox/events/delivery/InVmEventDelivery.java
----------------------------------------------------------------------
diff --git a/mailbox/event/event-memory/src/main/java/org/apache/james/mailbox/events/delivery/InVmEventDelivery.java b/mailbox/event/event-memory/src/main/java/org/apache/james/mailbox/events/delivery/InVmEventDelivery.java
index 90ae81f..f0b1b1e 100644
--- a/mailbox/event/event-memory/src/main/java/org/apache/james/mailbox/events/delivery/InVmEventDelivery.java
+++ b/mailbox/event/event-memory/src/main/java/org/apache/james/mailbox/events/delivery/InVmEventDelivery.java
@@ -19,6 +19,8 @@
 
 package org.apache.james.mailbox.events.delivery;
 
+import static org.apache.james.mailbox.events.EventBus.Metrics.timerName;
+
 import java.io.Closeable;
 
 import javax.inject.Inject;
@@ -81,7 +83,7 @@ public class InVmEventDelivery implements EventDelivery {
     }
 
     private void doDeliverToListener(MailboxListener mailboxListener, Event event) {
-        TimeMetric timer = metricFactory.timer("mailbox-listener-" + mailboxListener.getClass().getSimpleName());
+        TimeMetric timer = metricFactory.timer(timerName(mailboxListener));
         try (Closeable mdc = MDCBuilder.create()
                 .addContext(EventBus.StructuredLoggingFields.EVENT_ID, event.getEventId())
                 .addContext(EventBus.StructuredLoggingFields.EVENT_CLASS, event.getClass())
@@ -96,6 +98,7 @@ public class InVmEventDelivery implements EventDelivery {
             timer.stopAndPublish();
         }
     }
+
     private StructuredLogger structuredLogger(Event event, MailboxListener mailboxListener) {
         return MDCStructuredLogger.forLogger(LOGGER)
             .addField(EventBus.StructuredLoggingFields.EVENT_ID, event.getEventId())

http://git-wip-us.apache.org/repos/asf/james-project/blob/21603694/mailbox/event/event-rabbitmq/pom.xml
----------------------------------------------------------------------
diff --git a/mailbox/event/event-rabbitmq/pom.xml b/mailbox/event/event-rabbitmq/pom.xml
index 605fe6d..157be73 100644
--- a/mailbox/event/event-rabbitmq/pom.xml
+++ b/mailbox/event/event-rabbitmq/pom.xml
@@ -67,6 +67,10 @@
             <scope>test</scope>
         </dependency>
         <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>metrics-api</artifactId>
+        </dependency>
+        <dependency>
             <groupId>com.jayway.awaitility</groupId>
             <artifactId>awaitility</artifactId>
             <scope>test</scope>

http://git-wip-us.apache.org/repos/asf/james-project/blob/21603694/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/EventDispatcher.java
----------------------------------------------------------------------
diff --git a/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/EventDispatcher.java b/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/EventDispatcher.java
index 1331e29..628bab3 100644
--- a/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/EventDispatcher.java
+++ b/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/EventDispatcher.java
@@ -24,7 +24,6 @@ import static org.apache.james.backend.rabbitmq.Constants.DURABLE;
 import static org.apache.james.mailbox.events.RabbitMQEventBus.EVENT_BUS_ID;
 import static org.apache.james.mailbox.events.RabbitMQEventBus.MAILBOX_EVENT_EXCHANGE_NAME;
 
-import java.io.Closeable;
 import java.nio.charset.StandardCharsets;
 import java.util.Set;
 
@@ -57,14 +56,16 @@ class EventDispatcher {
     private final Sender sender;
     private final MailboxListenerRegistry mailboxListenerRegistry;
     private final AMQP.BasicProperties basicProperties;
+    private final MailboxListenerExecutor mailboxListenerExecutor;
 
-    EventDispatcher(EventBusId eventBusId, EventSerializer eventSerializer, Sender sender, MailboxListenerRegistry mailboxListenerRegistry) {
+    EventDispatcher(EventBusId eventBusId, EventSerializer eventSerializer, Sender sender, MailboxListenerRegistry mailboxListenerRegistry, MailboxListenerExecutor mailboxListenerExecutor) {
         this.eventSerializer = eventSerializer;
         this.sender = sender;
         this.mailboxListenerRegistry = mailboxListenerRegistry;
         this.basicProperties = new AMQP.BasicProperties.Builder()
             .headers(ImmutableMap.of(EVENT_BUS_ID, eventBusId.asString()))
             .build();
+        this.mailboxListenerExecutor = mailboxListenerExecutor;
     }
 
     void start() {
@@ -98,14 +99,10 @@ class EventDispatcher {
     }
 
     private void executeListener(Event event, MailboxListener mailboxListener, RegistrationKey registrationKey) throws Exception {
-        try (Closeable mdc = MDCBuilder.create()
-                .addContext(EventBus.StructuredLoggingFields.EVENT_ID, event.getEventId())
-                .addContext(EventBus.StructuredLoggingFields.EVENT_CLASS, event.getClass())
-                .addContext(EventBus.StructuredLoggingFields.USER, event.getUser())
-                .addContext(EventBus.StructuredLoggingFields.REGISTRATION_KEY, registrationKey)
-                .build()) {
-            mailboxListener.event(event);
-        }
+        mailboxListenerExecutor.execute(mailboxListener,
+            MDCBuilder.create()
+                .addContext(EventBus.StructuredLoggingFields.REGISTRATION_KEY, registrationKey),
+            event);
     }
 
     private StructuredLogger structuredLogger(Event event, Set<RegistrationKey> keys) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/21603694/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/GroupRegistration.java
----------------------------------------------------------------------
diff --git a/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/GroupRegistration.java b/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/GroupRegistration.java
index d975ef7..ee3013d 100644
--- a/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/GroupRegistration.java
+++ b/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/GroupRegistration.java
@@ -27,7 +27,6 @@ import static org.apache.james.backend.rabbitmq.Constants.NO_ARGUMENTS;
 import static org.apache.james.mailbox.events.RabbitMQEventBus.MAILBOX_EVENT;
 import static org.apache.james.mailbox.events.RabbitMQEventBus.MAILBOX_EVENT_EXCHANGE_NAME;
 
-import java.io.Closeable;
 import java.nio.charset.StandardCharsets;
 import java.util.Objects;
 import java.util.Optional;
@@ -86,17 +85,19 @@ class GroupRegistration implements Registration {
     private final GroupConsumerRetry retryHandler;
     private final WaitDelayGenerator delayGenerator;
     private final Group group;
+    private final MailboxListenerExecutor mailboxListenerExecutor;
     private Optional<Disposable> receiverSubscriber;
 
     GroupRegistration(Mono<Connection> connectionSupplier, Sender sender, EventSerializer eventSerializer,
                       MailboxListener mailboxListener, Group group, RetryBackoffConfiguration retryBackoff,
                       EventDeadLetters eventDeadLetters,
-                      Runnable unregisterGroup) {
+                      Runnable unregisterGroup, MailboxListenerExecutor mailboxListenerExecutor) {
         this.eventSerializer = eventSerializer;
         this.mailboxListener = mailboxListener;
         this.queueName = WorkQueueName.of(group);
         this.sender = sender;
         this.receiver = RabbitFlux.createReceiver(new ReceiverOptions().connectionMono(connectionSupplier));
+        this.mailboxListenerExecutor = mailboxListenerExecutor;
         this.receiverSubscriber = Optional.empty();
         this.unregisterGroup = unregisterGroup;
         this.retryHandler = new GroupConsumerRetry(sender, group, retryBackoff, eventDeadLetters);
@@ -149,14 +150,11 @@ class GroupRegistration implements Registration {
     }
 
     private void runListener(Event event) throws Exception {
-        try (Closeable mdc = MDCBuilder.create()
-                .addContext(EventBus.StructuredLoggingFields.EVENT_ID, event.getEventId())
-                .addContext(EventBus.StructuredLoggingFields.EVENT_CLASS, event.getClass())
-                .addContext(EventBus.StructuredLoggingFields.USER, event.getUser())
-                .addContext(EventBus.StructuredLoggingFields.GROUP, group)
-                .build()) {
-            mailboxListener.event(event);
-        }
+        mailboxListenerExecutor.execute(
+            mailboxListener,
+            MDCBuilder.create()
+                .addContext(EventBus.StructuredLoggingFields.GROUP, group),
+            event);
     }
 
     private int getRetryCount(AcknowledgableDelivery acknowledgableDelivery) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/21603694/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/GroupRegistrationHandler.java
----------------------------------------------------------------------
diff --git a/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/GroupRegistrationHandler.java b/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/GroupRegistrationHandler.java
index 9e3e062..1950aab 100644
--- a/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/GroupRegistrationHandler.java
+++ b/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/GroupRegistrationHandler.java
@@ -37,15 +37,17 @@ class GroupRegistrationHandler {
     private final Mono<Connection> connectionMono;
     private final RetryBackoffConfiguration retryBackoff;
     private final EventDeadLetters eventDeadLetters;
+    private final MailboxListenerExecutor mailboxListenerExecutor;
 
     GroupRegistrationHandler(EventSerializer eventSerializer, Sender sender, Mono<Connection> connectionMono,
                              RetryBackoffConfiguration retryBackoff,
-                             EventDeadLetters eventDeadLetters) {
+                             EventDeadLetters eventDeadLetters, MailboxListenerExecutor mailboxListenerExecutor) {
         this.eventSerializer = eventSerializer;
         this.sender = sender;
         this.connectionMono = connectionMono;
         this.retryBackoff = retryBackoff;
         this.eventDeadLetters = eventDeadLetters;
+        this.mailboxListenerExecutor = mailboxListenerExecutor;
         this.groupRegistrations = new ConcurrentHashMap<>();
     }
 
@@ -73,6 +75,7 @@ class GroupRegistrationHandler {
             group,
             retryBackoff,
             eventDeadLetters,
-            () -> groupRegistrations.remove(group));
+            () -> groupRegistrations.remove(group),
+            mailboxListenerExecutor);
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/james-project/blob/21603694/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/KeyRegistrationHandler.java
----------------------------------------------------------------------
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 b12e5b4..6e84254 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
@@ -25,7 +25,6 @@ import static org.apache.james.backend.rabbitmq.Constants.EXCLUSIVE;
 import static org.apache.james.backend.rabbitmq.Constants.NO_ARGUMENTS;
 import static org.apache.james.mailbox.events.RabbitMQEventBus.EVENT_BUS_ID;
 
-import java.io.Closeable;
 import java.nio.charset.StandardCharsets;
 import java.util.Optional;
 
@@ -63,15 +62,17 @@ class KeyRegistrationHandler {
     private final Receiver receiver;
     private final RegistrationQueueName registrationQueue;
     private final RegistrationBinder registrationBinder;
+    private final MailboxListenerExecutor mailboxListenerExecutor;
     private Optional<Disposable> receiverSubscriber;
 
-    KeyRegistrationHandler(EventBusId eventBusId, EventSerializer eventSerializer, Sender sender, Mono<Connection> connectionMono, RoutingKeyConverter routingKeyConverter, MailboxListenerRegistry mailboxListenerRegistry) {
+    KeyRegistrationHandler(EventBusId eventBusId, EventSerializer eventSerializer, Sender sender, Mono<Connection> connectionMono, RoutingKeyConverter routingKeyConverter, MailboxListenerRegistry mailboxListenerRegistry, MailboxListenerExecutor mailboxListenerExecutor) {
         this.eventBusId = eventBusId;
         this.eventSerializer = eventSerializer;
         this.sender = sender;
         this.routingKeyConverter = routingKeyConverter;
         this.mailboxListenerRegistry = mailboxListenerRegistry;
         this.receiver = RabbitFlux.createReceiver(new ReceiverOptions().connectionMono(connectionMono));
+        this.mailboxListenerExecutor = mailboxListenerExecutor;
         this.registrationQueue = new RegistrationQueueName();
         this.registrationBinder = new RegistrationBinder(sender, registrationQueue);
     }
@@ -133,14 +134,10 @@ class KeyRegistrationHandler {
     }
 
     private void executeListener(MailboxListener listener, Event event, RegistrationKey key) throws Exception {
-        try (Closeable mdc = MDCBuilder.create()
-                .addContext(EventBus.StructuredLoggingFields.EVENT_ID, event.getEventId())
-                .addContext(EventBus.StructuredLoggingFields.EVENT_CLASS, event.getClass())
-                .addContext(EventBus.StructuredLoggingFields.USER, event.getUser())
-                .addContext(EventBus.StructuredLoggingFields.REGISTRATION_KEY, key)
-                .build()) {
-            listener.event(event);
-        }
+        mailboxListenerExecutor.execute(listener,
+            MDCBuilder.create()
+                .addContext(EventBus.StructuredLoggingFields.REGISTRATION_KEY, key),
+            event);
     }
 
     private boolean isLocalSynchronousListeners(EventBusId eventBusId, MailboxListener listener) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/21603694/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/MailboxListenerExecutor.java
----------------------------------------------------------------------
diff --git a/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/MailboxListenerExecutor.java b/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/MailboxListenerExecutor.java
new file mode 100644
index 0000000..cea4d9e
--- /dev/null
+++ b/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/MailboxListenerExecutor.java
@@ -0,0 +1,52 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.mailbox.events;
+
+import static org.apache.james.mailbox.events.EventBus.Metrics.timerName;
+
+import java.io.Closeable;
+
+import org.apache.james.mailbox.Event;
+import org.apache.james.mailbox.MailboxListener;
+import org.apache.james.metrics.api.MetricFactory;
+import org.apache.james.metrics.api.TimeMetric;
+import org.apache.james.util.MDCBuilder;
+
+public class MailboxListenerExecutor {
+    private final MetricFactory metricFactory;
+
+    public MailboxListenerExecutor(MetricFactory metricFactory) {
+        this.metricFactory = metricFactory;
+    }
+
+    void execute(MailboxListener listener, MDCBuilder mdcBuilder, Event event) throws Exception {
+        TimeMetric timer = metricFactory.timer(timerName(listener));
+        try (Closeable mdc = mdcBuilder
+                .addContext(EventBus.StructuredLoggingFields.EVENT_ID, event.getEventId())
+                .addContext(EventBus.StructuredLoggingFields.EVENT_CLASS, event.getClass())
+                .addContext(EventBus.StructuredLoggingFields.USER, event.getUser())
+                .addContext(EventBus.StructuredLoggingFields.LISTENER_CLASS, listener.getClass())
+                .build()) {
+            listener.event(event);
+        } finally {
+            timer.stopAndPublish();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/21603694/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/RabbitMQEventBus.java
----------------------------------------------------------------------
diff --git a/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/RabbitMQEventBus.java b/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/RabbitMQEventBus.java
index 122ba04..8fba81d 100644
--- a/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/RabbitMQEventBus.java
+++ b/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/RabbitMQEventBus.java
@@ -29,6 +29,7 @@ import org.apache.james.backend.rabbitmq.RabbitMQConnectionFactory;
 import org.apache.james.event.json.EventSerializer;
 import org.apache.james.mailbox.Event;
 import org.apache.james.mailbox.MailboxListener;
+import org.apache.james.metrics.api.MetricFactory;
 
 import com.rabbitmq.client.Connection;
 
@@ -49,6 +50,7 @@ public class RabbitMQEventBus implements EventBus {
     private final RetryBackoffConfiguration retryBackoff;
     private final EventBusId eventBusId;
     private final EventDeadLetters eventDeadLetters;
+    private final MailboxListenerExecutor mailboxListenerExecutor;
 
     private MailboxListenerRegistry mailboxListenerRegistry;
     private GroupRegistrationHandler groupRegistrationHandler;
@@ -60,7 +62,8 @@ public class RabbitMQEventBus implements EventBus {
     RabbitMQEventBus(RabbitMQConnectionFactory rabbitMQConnectionFactory, EventSerializer eventSerializer,
                      RetryBackoffConfiguration retryBackoff,
                      RoutingKeyConverter routingKeyConverter,
-                     EventDeadLetters eventDeadLetters) {
+                     EventDeadLetters eventDeadLetters, MetricFactory metricFactory) {
+        this.mailboxListenerExecutor = new MailboxListenerExecutor(metricFactory);
         this.eventBusId = EventBusId.random();
         this.connectionMono = Mono.fromSupplier(rabbitMQConnectionFactory::create).cache();
         this.eventSerializer = eventSerializer;
@@ -74,9 +77,9 @@ public class RabbitMQEventBus implements EventBus {
         if (!isRunning.get()) {
             sender = RabbitFlux.createSender(new SenderOptions().connectionMono(connectionMono));
             mailboxListenerRegistry = new MailboxListenerRegistry();
-            keyRegistrationHandler = new KeyRegistrationHandler(eventBusId, eventSerializer, sender, connectionMono, routingKeyConverter, mailboxListenerRegistry);
-            groupRegistrationHandler = new GroupRegistrationHandler(eventSerializer, sender, connectionMono, retryBackoff, eventDeadLetters);
-            eventDispatcher = new EventDispatcher(eventBusId, eventSerializer, sender, mailboxListenerRegistry);
+            keyRegistrationHandler = new KeyRegistrationHandler(eventBusId, eventSerializer, sender, connectionMono, routingKeyConverter, mailboxListenerRegistry, mailboxListenerExecutor);
+            groupRegistrationHandler = new GroupRegistrationHandler(eventSerializer, sender, connectionMono, retryBackoff, eventDeadLetters, mailboxListenerExecutor);
+            eventDispatcher = new EventDispatcher(eventBusId, eventSerializer, sender, mailboxListenerRegistry, mailboxListenerExecutor);
 
             eventDispatcher.start();
             keyRegistrationHandler.start();

http://git-wip-us.apache.org/repos/asf/james-project/blob/21603694/mailbox/event/event-rabbitmq/src/test/java/org/apache/james/mailbox/events/RabbitMQEventBusTest.java
----------------------------------------------------------------------
diff --git a/mailbox/event/event-rabbitmq/src/test/java/org/apache/james/mailbox/events/RabbitMQEventBusTest.java b/mailbox/event/event-rabbitmq/src/test/java/org/apache/james/mailbox/events/RabbitMQEventBusTest.java
index efe5296..69204ad 100644
--- a/mailbox/event/event-rabbitmq/src/test/java/org/apache/james/mailbox/events/RabbitMQEventBusTest.java
+++ b/mailbox/event/event-rabbitmq/src/test/java/org/apache/james/mailbox/events/RabbitMQEventBusTest.java
@@ -56,6 +56,7 @@ import org.apache.james.mailbox.Event;
 import org.apache.james.mailbox.MailboxListener;
 import org.apache.james.mailbox.model.TestId;
 import org.apache.james.mailbox.model.TestMessageId;
+import org.apache.james.metrics.api.NoopMetricFactory;
 import org.apache.james.util.concurrency.ConcurrentTestRunner;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
@@ -126,7 +127,7 @@ class RabbitMQEventBusTest implements GroupContract.SingleEventBusGroupContract,
     }
 
     private RabbitMQEventBus newEventBus() {
-        return new RabbitMQEventBus(connectionFactory, eventSerializer, RetryBackoffConfiguration.DEFAULT, routingKeyConverter, memoryEventDeadLetters);
+        return new RabbitMQEventBus(connectionFactory, eventSerializer, RetryBackoffConfiguration.DEFAULT, routingKeyConverter, memoryEventDeadLetters, new NoopMetricFactory());
     }
 
     @Override


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org