This is an automated email from the ASF dual-hosted git repository. clebertsuconic pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git
commit 1fa5c761c67e3b5f26baca415662d5645101ab2c Author: Justin Bertram <[email protected]> AuthorDate: Wed Apr 26 15:25:47 2023 -0500 ARTEMIS-4212 fix management address issues --- .../core/server/impl/ActiveMQServerImpl.java | 2 +- .../core/server/impl/ServerSessionImpl.java | 4 +++ .../JMSMismatchedRoutingTypeTest.java | 36 ++++++++++++++++++++++ 3 files changed, 41 insertions(+), 1 deletion(-) diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java index 9259b8802d..20690cb835 100644 --- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java +++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java @@ -1068,7 +1068,7 @@ public class ActiveMQServerImpl implements ActiveMQServer { ManagementService managementService = getManagementService(); if (managementService != null) { if (realAddress.equals(managementService.getManagementAddress())) { - return new BindingQueryResult(true, null, Collections.emptyList(), autoCreateQeueus, autoCreateAddresses, defaultPurgeOnNoConsumers, defaultMaxConsumers, defaultExclusive, defaultLastValue, defaultLastValueKey, defaultNonDestructive, defaultConsumersBeforeDispatch, defaultDelayBeforeDispatch); + return new BindingQueryResult(true, new AddressInfo(managementService.getManagementAddress(), EnumSet.allOf(RoutingType.class)), Collections.emptyList(), autoCreateQeueus, autoCreateAddresses, defaultPurgeOnNoConsumers, defaultMaxConsumers, defaultExclusive, defaultLastValue, defaultLastValueKey, defaultNonDestructive, defaultConsumersBeforeDispatch, defaultDelayBeforeDispatch); } } diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ServerSessionImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ServerSessionImpl.java index 77ca360486..6d85381bd2 100644 --- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ServerSessionImpl.java +++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ServerSessionImpl.java @@ -1754,6 +1754,10 @@ public class ServerSessionImpl implements ServerSession, FailureListener { SimpleString unPrefixedQueue = removePrefix(queueConfig.getName()); AddressSettings addressSettings = server.getAddressSettingsRepository().getMatch(unPrefixedAddress.toString()); + if (unPrefixedAddress.equals(server.getManagementService().getManagementAddress())) { + return AutoCreateResult.EXISTED; + } + /* * This is only here to maintain backwards compatibility with the previous implementation. * diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/multiprotocol/JMSMismatchedRoutingTypeTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/multiprotocol/JMSMismatchedRoutingTypeTest.java index f962e973b6..f541dead65 100644 --- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/multiprotocol/JMSMismatchedRoutingTypeTest.java +++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/multiprotocol/JMSMismatchedRoutingTypeTest.java @@ -19,8 +19,11 @@ package org.apache.activemq.artemis.tests.integration.jms.multiprotocol; import javax.jms.Connection; import javax.jms.InvalidDestinationException; import javax.jms.JMSException; +import javax.jms.Message; import javax.jms.MessageProducer; import javax.jms.Queue; +import javax.jms.QueueRequestor; +import javax.jms.QueueSession; import javax.jms.Session; import javax.jms.Topic; @@ -135,4 +138,37 @@ public class JMSMismatchedRoutingTypeTest extends MultiprotocolJMSClientTestSupp } } } + + @Test + public void testManagementQueueRequestorAMQP() throws Exception { + internalTestManagementQueueRequestor(AMQPConnection); + } + + @Test + public void testManagementQueueRequestorCore() throws Exception { + internalTestManagementQueueRequestor(CoreConnection); + } + + @Test + public void testManagementQueueRequestorOpenWire() throws Exception { + internalTestManagementQueueRequestor(OpenWireConnection); + } + + private void internalTestManagementQueueRequestor(ConnectionSupplier connectionSupplier) throws Exception { + Connection connection = null; + try { + connection = connectionSupplier.createConnection(); + Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); + Queue managementQueue = session.createQueue(server.getConfiguration().getManagementAddress().toString()); + QueueRequestor requestor = new QueueRequestor(((QueueSession)session), managementQueue); + connection.start(); + Message m = session.createMessage(); + Message response = requestor.request(m); + assertNotNull(response); + } finally { + if (connection != null) { + connection.close(); + } + } + } } \ No newline at end of file
