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 2018/11/16 02:45:32 UTC
[2/4] james-project git commit: JAMES-2594 RabbitMQ dequeue should
use mailqueue item decorator factory
JAMES-2594 RabbitMQ dequeue should use mailqueue item decorator factory
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/5c5274d8
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/5c5274d8
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/5c5274d8
Branch: refs/heads/master
Commit: 5c5274d86e3abfe280c8223b9c5a8cc172b6b58f
Parents: a5c5576
Author: tran tien duc <dt...@linagora.com>
Authored: Thu Nov 15 16:52:22 2018 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Fri Nov 16 09:44:24 2018 +0700
----------------------------------------------------------------------
.../org/apache/james/queue/rabbitmq/RabbitMQMailQueue.java | 9 ++++++---
.../james/queue/rabbitmq/RabbitMQMailQueueFactory.java | 9 +++++++--
.../rabbitmq/RabbitMQMailQueueConfigurationChangeTest.java | 4 +++-
.../apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java | 4 +++-
.../james/queue/rabbitmq/RabbitMqMailQueueFactoryTest.java | 4 +++-
5 files changed, 22 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/5c5274d8/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueue.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueue.java b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueue.java
index 698f101..0909469 100644
--- a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueue.java
+++ b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueue.java
@@ -22,6 +22,7 @@ package org.apache.james.queue.rabbitmq;
import java.util.concurrent.TimeUnit;
import org.apache.james.metrics.api.MetricFactory;
+import org.apache.james.queue.api.MailQueueItemDecoratorFactory;
import org.apache.james.queue.api.ManageableMailQueue;
import org.apache.james.queue.rabbitmq.view.api.DeleteCondition;
import org.apache.james.queue.rabbitmq.view.api.MailQueueView;
@@ -41,15 +42,17 @@ public class RabbitMQMailQueue implements ManageableMailQueue {
private final Enqueuer enqueuer;
private final Dequeuer dequeuer;
private final MailQueueView mailQueueView;
+ private final MailQueueItemDecoratorFactory decoratorFactory;
RabbitMQMailQueue(MetricFactory metricFactory, MailQueueName name,
Enqueuer enqueuer, Dequeuer dequeuer,
- MailQueueView mailQueueView) {
+ MailQueueView mailQueueView, MailQueueItemDecoratorFactory decoratorFactory) {
this.metricFactory = metricFactory;
this.name = name;
this.enqueuer = enqueuer;
this.dequeuer = dequeuer;
this.mailQueueView = mailQueueView;
+ this.decoratorFactory = decoratorFactory;
}
@Override
@@ -58,7 +61,7 @@ public class RabbitMQMailQueue implements ManageableMailQueue {
}
@Override
- public void enQueue(Mail mail, long delay, TimeUnit unit) throws MailQueueException {
+ public void enQueue(Mail mail, long delay, TimeUnit unit) {
if (delay > 0) {
LOGGER.info("Ignored delay upon enqueue of {} : {} {}.", mail.getName(), delay, unit);
}
@@ -74,7 +77,7 @@ public class RabbitMQMailQueue implements ManageableMailQueue {
@Override
public MailQueueItem deQueue() {
return metricFactory.runPublishingTimerMetric(DEQUEUED_TIMER_METRIC_NAME_PREFIX + name.asString(),
- Throwing.supplier(dequeuer::deQueue).sneakyThrow());
+ Throwing.supplier(() -> decoratorFactory.decorate(dequeuer.deQueue())).sneakyThrow());
}
@Override
http://git-wip-us.apache.org/repos/asf/james-project/blob/5c5274d8/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueFactory.java
----------------------------------------------------------------------
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 b195ffe..52a99eb 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
@@ -37,6 +37,7 @@ import org.apache.james.blob.mail.MimeMessageStore;
import org.apache.james.metrics.api.GaugeRegistry;
import org.apache.james.metrics.api.MetricFactory;
import org.apache.james.queue.api.MailQueueFactory;
+import org.apache.james.queue.api.MailQueueItemDecoratorFactory;
import org.apache.james.queue.rabbitmq.view.api.MailQueueView;
import org.apache.mailet.Mail;
@@ -55,6 +56,7 @@ public class RabbitMQMailQueueFactory implements MailQueueFactory<RabbitMQMailQu
private final Function<MailReferenceDTO, Mail> mailLoader;
private final MailQueueView.Factory mailQueueViewFactory;
private final Clock clock;
+ private final MailQueueItemDecoratorFactory decoratorFactory;
@Inject
@VisibleForTesting PrivateFactory(MetricFactory metricFactory,
@@ -63,13 +65,15 @@ public class RabbitMQMailQueueFactory implements MailQueueFactory<RabbitMQMailQu
MimeMessageStore.Factory mimeMessageStoreFactory,
BlobId.Factory blobIdFactory,
MailQueueView.Factory mailQueueViewFactory,
- Clock clock) {
+ Clock clock,
+ MailQueueItemDecoratorFactory decoratorFactory) {
this.metricFactory = metricFactory;
this.gaugeRegistry = gaugeRegistry;
this.rabbitClient = rabbitClient;
this.mimeMessageStore = mimeMessageStoreFactory.mimeMessageStore();
this.mailQueueViewFactory = mailQueueViewFactory;
this.clock = clock;
+ this.decoratorFactory = decoratorFactory;
this.mailReferenceSerializer = new MailReferenceSerializer();
this.mailLoader = Throwing.function(new MailLoader(mimeMessageStore, blobIdFactory)::load).sneakyThrow();
}
@@ -85,7 +89,8 @@ public class RabbitMQMailQueueFactory implements MailQueueFactory<RabbitMQMailQu
metricFactory, mailQueueView, clock),
new Dequeuer(mailQueueName, rabbitClient, mailLoader, mailReferenceSerializer,
metricFactory, mailQueueView),
- mailQueueView);
+ mailQueueView,
+ decoratorFactory);
registerGaugeFor(rabbitMQMailQueue);
return rabbitMQMailQueue;
http://git-wip-us.apache.org/repos/asf/james-project/blob/5c5274d8/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueConfigurationChangeTest.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueConfigurationChangeTest.java b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueConfigurationChangeTest.java
index 76a7aeb..d0acd5d 100644
--- a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueConfigurationChangeTest.java
+++ b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueConfigurationChangeTest.java
@@ -48,6 +48,7 @@ import org.apache.james.metrics.api.NoopGaugeRegistry;
import org.apache.james.metrics.api.NoopMetricFactory;
import org.apache.james.queue.api.MailQueue;
import org.apache.james.queue.api.ManageableMailQueue;
+import org.apache.james.queue.api.RawMailQueueItemDecoratorFactory;
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.CassandraMailQueueViewTestFactory;
@@ -126,7 +127,8 @@ class RabbitMQMailQueueConfigurationChangeTest {
mimeMessageStoreFactory,
BLOB_ID_FACTORY,
mailQueueViewFactory,
- clock);
+ clock,
+ new RawMailQueueItemDecoratorFactory());
RabbitMQMailQueueFactory mailQueueFactory = new RabbitMQMailQueueFactory(rabbitClient, mqManagementApi, privateFactory);
return mailQueueFactory.createQueue(SPOOL);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/5c5274d8/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java
index 8e84341..7b7630d 100644
--- a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java
+++ b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java
@@ -48,6 +48,7 @@ import org.apache.james.queue.api.MailQueueMetricContract;
import org.apache.james.queue.api.MailQueueMetricExtension;
import org.apache.james.queue.api.ManageableMailQueue;
import org.apache.james.queue.api.ManageableMailQueueContract;
+import org.apache.james.queue.api.RawMailQueueItemDecoratorFactory;
import org.apache.james.queue.rabbitmq.view.api.MailQueueView;
import org.apache.james.queue.rabbitmq.view.cassandra.CassandraMailQueueViewModule;
import org.apache.james.queue.rabbitmq.view.cassandra.CassandraMailQueueViewTestFactory;
@@ -122,7 +123,8 @@ public class RabbitMQMailQueueTest implements ManageableMailQueueContract, MailQ
mimeMessageStoreFactory,
BLOB_ID_FACTORY,
mailQueueViewFactory,
- clock);
+ clock,
+ new RawMailQueueItemDecoratorFactory());
mqManagementApi = new RabbitMQManagementApi(rabbitMQConfiguration);
mailQueueFactory = new RabbitMQMailQueueFactory(rabbitClient, mqManagementApi, factory);
mailQueue = mailQueueFactory.createQueue(SPOOL);
http://git-wip-us.apache.org/repos/asf/james-project/blob/5c5274d8/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMqMailQueueFactoryTest.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMqMailQueueFactoryTest.java b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMqMailQueueFactoryTest.java
index 1f05da8..55f0da7 100644
--- a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMqMailQueueFactoryTest.java
+++ b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMqMailQueueFactoryTest.java
@@ -39,6 +39,7 @@ import org.apache.james.metrics.api.NoopGaugeRegistry;
import org.apache.james.metrics.api.NoopMetricFactory;
import org.apache.james.queue.api.MailQueueFactory;
import org.apache.james.queue.api.MailQueueFactoryContract;
+import org.apache.james.queue.api.RawMailQueueItemDecoratorFactory;
import org.apache.james.queue.rabbitmq.view.api.MailQueueView;
import org.apache.james.util.concurrency.ConcurrentTestRunner;
import org.junit.jupiter.api.AfterEach;
@@ -77,7 +78,8 @@ class RabbitMqMailQueueFactoryTest implements MailQueueFactoryContract<RabbitMQM
mimeMessageStoreFactory,
BLOB_ID_FACTORY,
mailQueueViewFactory,
- Clock.systemUTC());
+ Clock.systemUTC(),
+ new RawMailQueueItemDecoratorFactory());
mqManagementApi = new RabbitMQManagementApi(rabbitMQConfiguration);
mailQueueFactory = new RabbitMQMailQueueFactory(rabbitClient, mqManagementApi, factory);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org