You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2018/01/25 18:34:45 UTC
[2/3] activemq-artemis git commit: ARTEMIS-1633 - fire message
routing callbacks for all results
ARTEMIS-1633 - fire message routing callbacks for all results
Make sure ActiveMQServer plugin implementations are always notified of
message route events
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/37cc1e3e
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/37cc1e3e
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/37cc1e3e
Branch: refs/heads/master
Commit: 37cc1e3e7a6defb55193440a533c1c71ad1e163d
Parents: a82ffbc
Author: Christopher L. Shannon (cshannon) <ch...@gmail.com>
Authored: Wed Jan 24 11:03:12 2018 -0500
Committer: Clebert Suconic <cl...@apache.org>
Committed: Thu Jan 25 12:11:11 2018 -0500
----------------------------------------------------------------------
.../artemis/core/postoffice/impl/PostOfficeImpl.java | 9 ++++++---
.../tests/integration/plugin/ConfigurationVerifier.java | 10 ++++++++++
.../artemis/tests/integration/plugin/CorePluginTest.java | 6 ++++--
3 files changed, 20 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/37cc1e3e/artemis-server/src/main/java/org/apache/activemq/artemis/core/postoffice/impl/PostOfficeImpl.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/postoffice/impl/PostOfficeImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/postoffice/impl/PostOfficeImpl.java
index b0d37d1..456f200 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/postoffice/impl/PostOfficeImpl.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/postoffice/impl/PostOfficeImpl.java
@@ -772,6 +772,8 @@ public class PostOfficeImpl implements PostOffice, NotificationListener, Binding
message.cleanupInternalProperties();
+ server.callBrokerPlugins(server.hasBrokerPlugins() ? plugin -> plugin.beforeMessageRoute(message, context, direct, rejectDuplicates) : null);
+
Bindings bindings = addressManager.getBindingsForRoutingAddress(context.getAddress(message));
// TODO auto-create queues here?
@@ -841,10 +843,7 @@ public class PostOfficeImpl implements PostOffice, NotificationListener, Binding
}
} else {
try {
- server.callBrokerPlugins(server.hasBrokerPlugins() ? plugin -> plugin.beforeMessageRoute(message, context, direct, rejectDuplicates) : null);
processRoute(message, context, direct);
- final RoutingStatus finalResult = result;
- server.callBrokerPlugins(server.hasBrokerPlugins() ? plugin -> plugin.afterMessageRoute(message, context, direct, rejectDuplicates, finalResult) : null);
} catch (ActiveMQAddressFullException e) {
if (startedTX.get()) {
context.getTransaction().rollback();
@@ -858,6 +857,10 @@ public class PostOfficeImpl implements PostOffice, NotificationListener, Binding
if (startedTX.get()) {
context.getTransaction().commit();
}
+
+ final RoutingStatus finalResult = result;
+ server.callBrokerPlugins(server.hasBrokerPlugins() ? plugin -> plugin.afterMessageRoute(message, context, direct, rejectDuplicates, finalResult) : null);
+
return result;
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/37cc1e3e/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/plugin/ConfigurationVerifier.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/plugin/ConfigurationVerifier.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/plugin/ConfigurationVerifier.java
index 88f0ec3..e63401f 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/plugin/ConfigurationVerifier.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/plugin/ConfigurationVerifier.java
@@ -23,6 +23,7 @@ import java.util.concurrent.atomic.AtomicInteger;
import org.apache.activemq.artemis.api.core.ActiveMQException;
import org.apache.activemq.artemis.api.core.Message;
import org.apache.activemq.artemis.core.postoffice.RoutingStatus;
+import org.apache.activemq.artemis.core.server.RoutingContext;
import org.apache.activemq.artemis.core.server.ServerSession;
import org.apache.activemq.artemis.core.server.plugin.ActiveMQServerPlugin;
import org.apache.activemq.artemis.core.transaction.Transaction;
@@ -40,6 +41,7 @@ public class ConfigurationVerifier implements ActiveMQServerPlugin, Serializable
public String value2;
public String value3;
public AtomicInteger afterSendCounter = new AtomicInteger();
+ public AtomicInteger successRoutedCounter = new AtomicInteger();
@Override
public void init(Map<String, String> properties) {
@@ -61,4 +63,12 @@ public class ConfigurationVerifier implements ActiveMQServerPlugin, Serializable
afterSendCounter.incrementAndGet();
}
+ @Override
+ public void afterMessageRoute(Message message, RoutingContext context, boolean direct, boolean rejectDuplicates,
+ RoutingStatus result) throws ActiveMQException {
+ if (result == RoutingStatus.OK) {
+ successRoutedCounter.incrementAndGet();
+ }
+ }
+
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/37cc1e3e/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/plugin/CorePluginTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/plugin/CorePluginTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/plugin/CorePluginTest.java
index 518dd3f..a89b43a 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/plugin/CorePluginTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/plugin/CorePluginTest.java
@@ -129,12 +129,14 @@ public class CorePluginTest extends JMSTestBase {
BEFORE_REMOVE_ADDRESS, AFTER_REMOVE_ADDRESS);
verifier.validatePluginMethodsEquals(1, AFTER_CREATE_CONNECTION, AFTER_DESTROY_CONNECTION,
BEFORE_CREATE_CONSUMER, AFTER_CREATE_CONSUMER, BEFORE_CLOSE_CONSUMER, AFTER_CLOSE_CONSUMER,
- BEFORE_CREATE_QUEUE, AFTER_CREATE_QUEUE, MESSAGE_ACKED, BEFORE_SEND, AFTER_SEND, BEFORE_MESSAGE_ROUTE,
- AFTER_MESSAGE_ROUTE, BEFORE_ADD_ADDRESS, AFTER_ADD_ADDRESS);
+ BEFORE_CREATE_QUEUE, AFTER_CREATE_QUEUE, MESSAGE_ACKED, BEFORE_SEND, AFTER_SEND, BEFORE_ADD_ADDRESS, AFTER_ADD_ADDRESS);
verifier.validatePluginMethodsEquals(2, BEFORE_CREATE_SESSION, AFTER_CREATE_SESSION, BEFORE_CLOSE_SESSION,
AFTER_CLOSE_SESSION);
+ verifier.validatePluginMethodsAtLeast(1, BEFORE_MESSAGE_ROUTE,
+ AFTER_MESSAGE_ROUTE);
assertEquals("configurationVerifier is invoked", 1, configurationVerifier.afterSendCounter.get());
+ assertEquals("configurationVerifier is invoked", 1, configurationVerifier.successRoutedCounter.get());
assertEquals("configurationVerifier config set", "val_1", configurationVerifier.value1);
}