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 2017/03/15 10:02:06 UTC
[20/22] james-project git commit: JAMES-1950 Add time measurement for
JMS queues
JAMES-1950 Add time measurement for JMS queues
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/e8b94d17
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/e8b94d17
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/e8b94d17
Branch: refs/heads/master
Commit: e8b94d178a0e23be25b7681900972b1bac48f543
Parents: a00d5e4
Author: benwa <bt...@linagora.com>
Authored: Wed Mar 15 10:44:50 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Wed Mar 15 16:57:31 2017 +0700
----------------------------------------------------------------------
.../james/queue/activemq/ActiveMQMailQueue.java | 10 +++++-----
.../queue/activemq/ActiveMQMailQueueFactory.java | 2 +-
.../james/queue/activemq/ActiveMQMailQueueTest.java | 6 ++----
.../java/org/apache/james/queue/jms/JMSMailQueue.java | 14 +++++++++++---
.../apache/james/queue/jms/JMSMailQueueFactory.java | 2 +-
.../james/queue/jms/AbstractJMSMailQueueTest.java | 5 ++---
6 files changed, 22 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/e8b94d17/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueue.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueue.java b/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueue.java
index 8a80ad3..56c25c1 100644
--- a/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueue.java
+++ b/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueue.java
@@ -43,7 +43,7 @@ import org.apache.activemq.util.JMSExceptionSupport;
import org.apache.james.core.MimeMessageCopyOnWriteProxy;
import org.apache.james.core.MimeMessageInputStream;
import org.apache.james.core.MimeMessageSource;
-import org.apache.james.metrics.api.Metric;
+import org.apache.james.metrics.api.MetricFactory;
import org.apache.james.queue.api.MailQueue;
import org.apache.james.queue.api.MailQueueItemDecoratorFactory;
import org.apache.james.queue.jms.JMSMailQueue;
@@ -93,8 +93,8 @@ public class ActiveMQMailQueue extends JMSMailQueue implements ActiveMQSupport {
* Construct a {@link ActiveMQMailQueue} which only use {@link BlobMessage}
*
*/
- public ActiveMQMailQueue(ConnectionFactory connectionFactory, MailQueueItemDecoratorFactory mailQueueItemDecoratorFactory, String queuename, Metric enqueuedMailsMetric, Logger logger) {
- this(connectionFactory, mailQueueItemDecoratorFactory, queuename, true, enqueuedMailsMetric, logger);
+ public ActiveMQMailQueue(ConnectionFactory connectionFactory, MailQueueItemDecoratorFactory mailQueueItemDecoratorFactory, String queuename, MetricFactory metricFactory, Logger logger) {
+ this(connectionFactory, mailQueueItemDecoratorFactory, queuename, true, metricFactory, logger);
}
/**
@@ -105,8 +105,8 @@ public class ActiveMQMailQueue extends JMSMailQueue implements ActiveMQSupport {
* @param useBlob
* @param logger
*/
- public ActiveMQMailQueue(ConnectionFactory connectionFactory, MailQueueItemDecoratorFactory mailQueueItemDecoratorFactory, String queuename, boolean useBlob, Metric enqueuedMailsMetric, Logger logger) {
- super(connectionFactory, mailQueueItemDecoratorFactory, queuename, enqueuedMailsMetric, logger);
+ public ActiveMQMailQueue(ConnectionFactory connectionFactory, MailQueueItemDecoratorFactory mailQueueItemDecoratorFactory, String queuename, boolean useBlob, MetricFactory metricFactory, Logger logger) {
+ super(connectionFactory, mailQueueItemDecoratorFactory, queuename, metricFactory, logger);
this.useBlob = useBlob;
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/e8b94d17/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueueFactory.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueueFactory.java b/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueueFactory.java
index 9646a29..5653066 100644
--- a/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueueFactory.java
+++ b/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueueFactory.java
@@ -50,6 +50,6 @@ public class ActiveMQMailQueueFactory extends JMSMailQueueFactory {
@Override
protected MailQueue createMailQueue(String name) {
- return new ActiveMQMailQueue(connectionFactory, mailQueueItemDecoratorFactory, name, useBlob, metricFactory.generate("enqueuedMails:" + name), log);
+ return new ActiveMQMailQueue(connectionFactory, mailQueueItemDecoratorFactory, name, useBlob, metricFactory, log);
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/e8b94d17/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueTest.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueTest.java b/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueTest.java
index 1203c74..3cd6d5d 100644
--- a/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueTest.java
+++ b/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueTest.java
@@ -18,8 +18,6 @@
****************************************************************/
package org.apache.james.queue.activemq;
-import static org.mockito.Mockito.mock;
-
import java.util.Arrays;
import javax.jms.ConnectionFactory;
@@ -29,7 +27,7 @@ import org.apache.activemq.broker.BrokerService;
import org.apache.activemq.broker.region.policy.PolicyEntry;
import org.apache.activemq.broker.region.policy.PolicyMap;
import org.apache.activemq.plugin.StatisticsBrokerPlugin;
-import org.apache.james.metrics.api.Metric;
+import org.apache.james.metrics.api.NoopMetricFactory;
import org.apache.james.queue.api.MailQueueItemDecoratorFactory;
import org.apache.james.queue.jms.AbstractJMSMailQueueTest;
import org.apache.james.queue.jms.JMSMailQueue;
@@ -79,7 +77,7 @@ public abstract class ActiveMQMailQueueTest extends AbstractJMSMailQueueTest {
protected JMSMailQueue createQueue(ConnectionFactory factory, MailQueueItemDecoratorFactory mailQueueItemDecoratorFactory, String queueName) {
Logger log = LoggerFactory.getLogger(ActiveMQMailQueueTest.class);
- return new ActiveMQMailQueue(factory, mailQueueItemDecoratorFactory, queueName, useBlobMessages(), mock(Metric.class), log);
+ return new ActiveMQMailQueue(factory, mailQueueItemDecoratorFactory, queueName, useBlobMessages(), new NoopMetricFactory(), log);
}
protected boolean useBlobMessages() {
http://git-wip-us.apache.org/repos/asf/james-project/blob/e8b94d17/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java b/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java
index a14b362..2ebff7b 100644
--- a/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java
+++ b/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java
@@ -51,6 +51,8 @@ import org.apache.james.core.MailImpl;
import org.apache.james.core.MimeMessageCopyOnWriteProxy;
import org.apache.james.lifecycle.api.Disposable;
import org.apache.james.metrics.api.Metric;
+import org.apache.james.metrics.api.MetricFactory;
+import org.apache.james.metrics.api.TimeMetric;
import org.apache.james.queue.api.MailPrioritySupport;
import org.apache.james.queue.api.MailQueue;
import org.apache.james.queue.api.MailQueueItemDecoratorFactory;
@@ -78,10 +80,11 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori
protected final Connection connection;
protected final MailQueueItemDecoratorFactory mailQueueItemDecoratorFactory;
protected final Metric enqueuedMailsMetric;
+ protected final MetricFactory metricFactory;
protected final Logger logger;
public final static String FORCE_DELIVERY = "FORCE_DELIVERY";
- public JMSMailQueue(ConnectionFactory connectionFactory, MailQueueItemDecoratorFactory mailQueueItemDecoratorFactory, String queueName, Metric enqueuedMailsMetric, Logger logger) {
+ public JMSMailQueue(ConnectionFactory connectionFactory, MailQueueItemDecoratorFactory mailQueueItemDecoratorFactory, String queueName, MetricFactory metricFactory, Logger logger) {
try {
connection = connectionFactory.createConnection();
connection.start();
@@ -90,7 +93,8 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori
}
this.mailQueueItemDecoratorFactory = mailQueueItemDecoratorFactory;
this.queueName = queueName;
- this.enqueuedMailsMetric = enqueuedMailsMetric;
+ this.metricFactory = metricFactory;
+ this.enqueuedMailsMetric = metricFactory.generate("enqueuedMail:" + queueName);
this.logger = logger;
}
@@ -113,6 +117,7 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori
MessageConsumer consumer = null;
while (true) {
+ TimeMetric timeMetric = metricFactory.timer("dequeueTime:" + queueName);
try {
session = connection.createSession(true, Session.SESSION_TRANSACTED);
Queue queue = session.createQueue(queueName);
@@ -166,6 +171,8 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori
}
throw new MailQueueException("Unable to dequeue next message", e);
+ } finally {
+ timeMetric.stopAndPublish();
}
}
@@ -173,6 +180,7 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori
@Override
public void enQueue(Mail mail, long delay, TimeUnit unit) throws MailQueueException {
+ TimeMetric timeMetric = metricFactory.timer("enqueueMailTime:" + queueName);
Session session = null;
long mydelay = 0;
@@ -207,13 +215,13 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori
throw new MailQueueException("Unable to enqueue mail " + mail, e);
} finally {
+ timeMetric.stopAndPublish();
try {
if (session != null)
session.close();
} catch (JMSException e) {
// ignore here
}
-
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/e8b94d17/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueueFactory.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueueFactory.java b/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueueFactory.java
index 36770d6..e023de9 100644
--- a/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueueFactory.java
+++ b/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueueFactory.java
@@ -45,7 +45,7 @@ public class JMSMailQueueFactory extends AbstractMailQueueFactory {
@Override
protected MailQueue createMailQueue(String name) {
- return new JMSMailQueue(connectionFactory, mailQueueItemDecoratorFactory, name, metricFactory.generate("enqueuedMail:" + name), log);
+ return new JMSMailQueue(connectionFactory, mailQueueItemDecoratorFactory, name, metricFactory, log);
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/e8b94d17/server/queue/queue-jms/src/test/java/org/apache/james/queue/jms/AbstractJMSMailQueueTest.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-jms/src/test/java/org/apache/james/queue/jms/AbstractJMSMailQueueTest.java b/server/queue/queue-jms/src/test/java/org/apache/james/queue/jms/AbstractJMSMailQueueTest.java
index 76bb6c4..3947a58 100644
--- a/server/queue/queue-jms/src/test/java/org/apache/james/queue/jms/AbstractJMSMailQueueTest.java
+++ b/server/queue/queue-jms/src/test/java/org/apache/james/queue/jms/AbstractJMSMailQueueTest.java
@@ -22,7 +22,6 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.mock;
import java.io.IOException;
import java.util.Arrays;
@@ -40,7 +39,7 @@ import javax.mail.internet.MimeMessage;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.james.core.MailImpl;
-import org.apache.james.metrics.api.Metric;
+import org.apache.james.metrics.api.NoopMetricFactory;
import org.apache.james.protocols.smtp.MailAddressException;
import org.apache.james.queue.api.MailQueue.MailQueueItem;
import org.apache.james.queue.api.MailQueueItemDecoratorFactory;
@@ -72,7 +71,7 @@ public abstract class AbstractJMSMailQueueTest {
protected JMSMailQueue createQueue(ConnectionFactory factory, MailQueueItemDecoratorFactory mailQueueItemDecoratorFactory, String queueName) {
Logger log = LoggerFactory.getLogger(AbstractJMSMailQueueTest.class);
- return new JMSMailQueue(factory, mailQueueItemDecoratorFactory, queueName, mock(Metric.class), log);
+ return new JMSMailQueue(factory, mailQueueItemDecoratorFactory, queueName, new NoopMetricFactory(), log);
}
@Before
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org