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