JAMES-2551 Fix RabbitMQ binding

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

Branch: refs/heads/master
Commit: 937de069a275dfaa54ea576e83dd5e0845c0152b
Parents: f88cb4b
Author: Antoine Duprat <adup...@linagora.com>
Authored: Wed Oct 3 15:06:46 2018 +0200
Committer: Antoine Duprat <adup...@linagora.com>
Committed: Wed Oct 31 17:56:16 2018 +0100

----------------------------------------------------------------------
 server/container/guice/rabbitmq/pom.xml         |  8 +++
 .../james/modules/rabbitmq/RabbitMQModule.java  | 55 ++++++++++++++++++++
 2 files changed, 63 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/937de069/server/container/guice/rabbitmq/pom.xml
----------------------------------------------------------------------
diff --git a/server/container/guice/rabbitmq/pom.xml 
b/server/container/guice/rabbitmq/pom.xml
index 25a8e64..b5fd4ae 100644
--- a/server/container/guice/rabbitmq/pom.xml
+++ b/server/container/guice/rabbitmq/pom.xml
@@ -41,6 +41,14 @@
             <artifactId>james-server-guice-configuration</artifactId>
         </dependency>
         <dependency>
+            <groupId>${james.groupId}</groupId>
+            <artifactId>james-server-queue-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>${james.groupId}</groupId>
+            <artifactId>james-server-queue-rabbitmq</artifactId>
+        </dependency>
+        <dependency>
             <groupId>com.google.inject</groupId>
             <artifactId>guice</artifactId>
         </dependency>

http://git-wip-us.apache.org/repos/asf/james-project/blob/937de069/server/container/guice/rabbitmq/src/main/java/org/apache/james/modules/rabbitmq/RabbitMQModule.java
----------------------------------------------------------------------
diff --git 
a/server/container/guice/rabbitmq/src/main/java/org/apache/james/modules/rabbitmq/RabbitMQModule.java
 
b/server/container/guice/rabbitmq/src/main/java/org/apache/james/modules/rabbitmq/RabbitMQModule.java
index 283fdfc..15f9c42 100644
--- 
a/server/container/guice/rabbitmq/src/main/java/org/apache/james/modules/rabbitmq/RabbitMQModule.java
+++ 
b/server/container/guice/rabbitmq/src/main/java/org/apache/james/modules/rabbitmq/RabbitMQModule.java
@@ -19,18 +19,39 @@
 package org.apache.james.modules.rabbitmq;
 
 import java.io.FileNotFoundException;
+import java.time.Clock;
+import java.time.Duration;
+import java.util.concurrent.ThreadLocalRandom;
 
 import javax.inject.Singleton;
 
 import org.apache.commons.configuration.Configuration;
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.james.backend.rabbitmq.RabbitMQConfiguration;
+import org.apache.james.backends.cassandra.components.CassandraModule;
+import org.apache.james.eventsourcing.eventstore.cassandra.dto.EventDTOModule;
+import org.apache.james.queue.api.MailQueueFactory;
+import org.apache.james.queue.rabbitmq.RabbitMQMailQueueFactory;
+import org.apache.james.queue.rabbitmq.view.api.MailQueueView;
+import org.apache.james.queue.rabbitmq.view.cassandra.BrowseStartDAO;
+import 
org.apache.james.queue.rabbitmq.view.cassandra.CassandraMailQueueBrowser;
+import 
org.apache.james.queue.rabbitmq.view.cassandra.CassandraMailQueueMailDelete;
+import 
org.apache.james.queue.rabbitmq.view.cassandra.CassandraMailQueueMailStore;
+import org.apache.james.queue.rabbitmq.view.cassandra.CassandraMailQueueView;
+import 
org.apache.james.queue.rabbitmq.view.cassandra.CassandraMailQueueViewModule;
+import org.apache.james.queue.rabbitmq.view.cassandra.DeletedMailsDAO;
+import org.apache.james.queue.rabbitmq.view.cassandra.EnqueuedMailsDAO;
+import 
org.apache.james.queue.rabbitmq.view.cassandra.configuration.CassandraMailQueueViewConfiguration;
+import 
org.apache.james.queue.rabbitmq.view.cassandra.configuration.CassandraMailQueueViewConfigurationModule;
+import 
org.apache.james.queue.rabbitmq.view.cassandra.configuration.EventsourcingConfigurationManagement;
 import org.apache.james.utils.PropertiesProvider;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.google.inject.AbstractModule;
 import com.google.inject.Provides;
+import com.google.inject.Scopes;
+import com.google.inject.multibindings.Multibinder;
 
 public class RabbitMQModule extends AbstractModule {
 
@@ -40,6 +61,40 @@ public class RabbitMQModule extends AbstractModule {
 
     @Override
     protected void configure() {
+        bind(Clock.class).toInstance(Clock.systemUTC());
+        bind(ThreadLocalRandom.class).toInstance(ThreadLocalRandom.current());
+        
bind(CassandraMailQueueViewConfiguration.class).toInstance(CassandraMailQueueViewConfiguration
+                .builder()
+                .bucketCount(1)
+                .updateBrowseStartPace(1000)
+                .sliceWindow(Duration.ofHours(1))
+                .build());
+
+        bind(EnqueuedMailsDAO.class).in(Scopes.SINGLETON);
+        bind(DeletedMailsDAO.class).in(Scopes.SINGLETON);
+        bind(BrowseStartDAO.class).in(Scopes.SINGLETON);
+        bind(CassandraMailQueueBrowser.class).in(Scopes.SINGLETON);
+        bind(CassandraMailQueueMailDelete.class).in(Scopes.SINGLETON);
+        bind(CassandraMailQueueMailStore.class).in(Scopes.SINGLETON);
+
+        Multibinder<CassandraModule> cassandraModuleBinder = 
Multibinder.newSetBinder(binder(), CassandraModule.class);
+        
cassandraModuleBinder.addBinding().toInstance(CassandraMailQueueViewModule.MODULE);
+
+        bind(EventsourcingConfigurationManagement.class).in(Scopes.SINGLETON);
+        Multibinder<EventDTOModule> eventDTOModuleBinder = 
Multibinder.newSetBinder(binder(), EventDTOModule.class);
+        
eventDTOModuleBinder.addBinding().toInstance(CassandraMailQueueViewConfigurationModule.MAIL_QUEUE_VIEW_CONFIGURATION);
+    }
+
+    @Provides
+    @Singleton
+    public MailQueueView.Factory 
bindMailQueueViewFactory(CassandraMailQueueView.Factory 
cassandraMailQueueViewFactory) {
+        return cassandraMailQueueViewFactory;
+    }
+
+    @Provides
+    @Singleton
+    public MailQueueFactory<?> 
bindRabbitMQQueueFactory(RabbitMQMailQueueFactory queueFactory) {
+        return queueFactory;
     }
 
     @Provides


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

Reply via email to