This is an automated email from the ASF dual-hosted git repository.

tabish pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git


The following commit(s) were added to refs/heads/main by this push:
     new 0277c6498e ARTEMIS-4914 clarify docs on core + client ID
0277c6498e is described below

commit 0277c6498ee848ab5a4cb0f3bd4fbcbe4f410785
Author: Justin Bertram <[email protected]>
AuthorDate: Tue Jul 9 10:33:53 2024 -0500

    ARTEMIS-4914 clarify docs on core + client ID
    
    This commit also adds a couple of tests to verify the documented
    behavior works.
---
 .../view/predicate/ActiveMQFilterPredicate.java    |   2 +-
 docs/user-manual/core.adoc                         |  15 ++-
 .../management/ActiveMQServerControlTest.java      | 103 ++++++++++++++++++---
 3 files changed, 99 insertions(+), 21 deletions(-)

diff --git 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ActiveMQFilterPredicate.java
 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ActiveMQFilterPredicate.java
index 3b1bcfae3e..80a373fb44 100644
--- 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ActiveMQFilterPredicate.java
+++ 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ActiveMQFilterPredicate.java
@@ -22,7 +22,7 @@ import java.util.function.Predicate;
 
 public class ActiveMQFilterPredicate<T> implements Predicate<T> {
 
-   enum Operation {
+   public enum Operation {
       CONTAINS, NOT_CONTAINS, EQUALS, GREATER_THAN, LESS_THAN;
    }
 
diff --git a/docs/user-manual/core.adoc b/docs/user-manual/core.adoc
index b0ff048e14..598b29819c 100644
--- a/docs/user-manual/core.adoc
+++ b/docs/user-manual/core.adoc
@@ -74,21 +74,20 @@ Blocking on each messages sent is costly since it requires 
a network round trip
 By not blocking and receiving send acknowledgements asynchronously you can 
create true end to end asynchronous systems which is not possible using the 
standard JMS API.
 For more information on this advanced feature please see the section 
xref:send-guarantees.adoc#guarantees-of-sends-and-commits[Guarantees of sends 
and commits].
 
-==== Identifying your session for management and debugging
+==== Identifying your client application for management and debugging
 
-Assigning IDs to your core sessions can help you with monitoring and debugging 
the cluster using the 
xref:management-console.adoc#management-console[management console].
+Assigning IDs to your core session can help you with monitoring and debugging 
using the xref:management-console.adoc#management-console[management console], 
e.g.:
 
 [,java]
 ----
- ClientSession session;
- // ...
- session.addMetaData(ClientSession.JMS_SESSION_IDENTIFIER_PROPERTY, 
"jms-client-id");
- session.addMetaData("jms-client-id", "my-session");
+ServerLocator locator = ...
+ClientSessionFactory csf = createSessionFactory(locator);
+ClientSession session = csf.createSession(null, null, false, true, true, 
locator.isPreAcknowledge(), locator.getAckBatchSize(), "my-client-id");
 ----
 
-Such ID will then appear in the *Client ID* column under the *Connections*, 
*Consumers* and *Producers* tabs.
+The value `my-client-id` will then appear in the *Client ID* column under the 
*Connections*, *Consumers*, and *Producers* tabs.
 
-If you are using the JMS API, the `setClientID` would give you the same effect.
+If you are using the JMS API then `setClientID` would give you the same effect.
 
 === ClientConsumer
 
diff --git 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java
 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java
index a37e613335..62b6e67a19 100644
--- 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java
+++ 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java
@@ -16,16 +16,6 @@
  */
 package org.apache.activemq.artemis.tests.integration.management;
 
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertNotEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertSame;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.fail;
-import static org.junit.jupiter.api.Assumptions.assumeFalse;
-
 import javax.jms.Connection;
 import javax.jms.ConnectionFactory;
 import javax.jms.MessageConsumer;
@@ -36,6 +26,7 @@ import javax.jms.Topic;
 import javax.jms.TopicSubscriber;
 import javax.transaction.xa.XAResource;
 import javax.transaction.xa.Xid;
+import java.lang.invoke.MethodHandles;
 import java.lang.reflect.Field;
 import java.nio.ByteBuffer;
 import java.text.SimpleDateFormat;
@@ -95,6 +86,7 @@ import 
org.apache.activemq.artemis.core.management.impl.view.ConnectionField;
 import org.apache.activemq.artemis.core.management.impl.view.ConsumerField;
 import org.apache.activemq.artemis.core.management.impl.view.ProducerField;
 import org.apache.activemq.artemis.core.management.impl.view.SessionField;
+import 
org.apache.activemq.artemis.core.management.impl.view.predicate.ActiveMQFilterPredicate;
 import 
org.apache.activemq.artemis.core.messagecounter.impl.MessageCounterManagerImpl;
 import org.apache.activemq.artemis.core.persistence.OperationContext;
 import 
org.apache.activemq.artemis.core.persistence.config.PersistedDivertConfiguration;
@@ -144,7 +136,16 @@ import org.junit.jupiter.api.TestTemplate;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import java.lang.invoke.MethodHandles;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertSame;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
+import static org.junit.jupiter.api.Assumptions.assumeFalse;
 
 @ExtendWith(ParameterizedTestExtension.class)
 public class ActiveMQServerControlTest extends ManagementTestBase {
@@ -4541,6 +4542,84 @@ public class ActiveMQServerControlTest extends 
ManagementTestBase {
       }
    }
 
+   @TestTemplate
+   public void testListConnectionsCoreClientID() throws Exception {
+      final String clientId = RandomUtil.randomString();
+      SimpleString queueName1 = SimpleString.of("my_queue_one");
+      SimpleString addressName1 = SimpleString.of("my_address_one");
+
+      ActiveMQServerControl serverControl = createManagementControl();
+
+      server.addAddressInfo(new AddressInfo(addressName1, 
RoutingType.ANYCAST));
+      if (legacyCreateQueue) {
+         server.createQueue(addressName1, RoutingType.ANYCAST, queueName1, 
null, false, false);
+      } else {
+         
server.createQueue(QueueConfiguration.of(queueName1).setAddress(addressName1).setRoutingType(RoutingType.ANYCAST).setDurable(false));
+      }
+
+      ClientSessionFactoryImpl csf = null;
+
+      try (ServerLocator locator = createInVMNonHALocator()) {
+         csf = (ClientSessionFactoryImpl) createSessionFactory(locator);
+         csf.createSession(null, null, false, true, true, 
locator.isPreAcknowledge(), locator.getAckBatchSize(), clientId);
+
+         String filterString = 
createJsonFilter(ConnectionField.CLIENT_ID.getName(), 
ActiveMQFilterPredicate.Operation.EQUALS.toString(), clientId);
+
+         String connectionsAsJsonString = 
serverControl.listConnections(filterString, 1, 50);
+         JsonObject connectionsAsJsonObject = 
JsonUtil.readJsonObject(connectionsAsJsonString);
+         JsonArray array = (JsonArray) connectionsAsJsonObject.get("data");
+
+         assertEquals(1, array.size(), "number of connections returned from 
query");
+         JsonObject jsonConnection = array.getJsonObject(0);
+
+         assertEquals(clientId, 
jsonConnection.getString(ConnectionField.CLIENT_ID.getName()));
+      } finally {
+         if (csf != null) {
+            csf.close();
+         }
+      }
+   }
+
+   @TestTemplate
+   public void testListConnectionsCoreClientIDLegacy() throws Exception {
+      final String clientId = RandomUtil.randomString();
+      SimpleString queueName1 = SimpleString.of("my_queue_one");
+      SimpleString addressName1 = SimpleString.of("my_address_one");
+
+      ActiveMQServerControl serverControl = createManagementControl();
+
+      server.addAddressInfo(new AddressInfo(addressName1, 
RoutingType.ANYCAST));
+      if (legacyCreateQueue) {
+         server.createQueue(addressName1, RoutingType.ANYCAST, queueName1, 
null, false, false);
+      } else {
+         
server.createQueue(QueueConfiguration.of(queueName1).setAddress(addressName1).setRoutingType(RoutingType.ANYCAST).setDurable(false));
+      }
+
+      ClientSessionFactoryImpl csf = null;
+
+      try (ServerLocator locator = createInVMNonHALocator()) {
+         csf = (ClientSessionFactoryImpl) createSessionFactory(locator);
+         ClientSession session = csf.createSession();
+         
session.addUniqueMetaData(ClientSession.JMS_SESSION_IDENTIFIER_PROPERTY, "");
+         
session.addUniqueMetaData(ClientSession.JMS_SESSION_CLIENT_ID_PROPERTY, 
clientId);
+
+         String filterString = 
createJsonFilter(ConnectionField.CLIENT_ID.getName(), 
ActiveMQFilterPredicate.Operation.EQUALS.toString(), clientId);
+
+         String connectionsAsJsonString = 
serverControl.listConnections(filterString, 1, 50);
+         JsonObject connectionsAsJsonObject = 
JsonUtil.readJsonObject(connectionsAsJsonString);
+         JsonArray array = (JsonArray) connectionsAsJsonObject.get("data");
+
+         assertEquals(1, array.size(), "number of connections returned from 
query");
+         JsonObject jsonConnection = array.getJsonObject(0);
+
+         assertEquals(clientId, 
jsonConnection.getString(ConnectionField.CLIENT_ID.getName()));
+      } finally {
+         if (csf != null) {
+            csf.close();
+         }
+      }
+   }
+
    @TestTemplate
    public void testListConnectionsJmsClientID() throws Exception {
       final String clientId = RandomUtil.randomString();
@@ -4550,7 +4629,7 @@ public class ActiveMQServerControlTest extends 
ManagementTestBase {
       ConnectionFactory cf = new ActiveMQConnectionFactory("vm://0");
       try (Connection c = cf.createConnection()) {
          c.setClientID(clientId);
-         String filterString = 
createJsonFilter(ConnectionField.CLIENT_ID.getName(), "EQUALS", clientId);
+         String filterString = 
createJsonFilter(ConnectionField.CLIENT_ID.getName(), 
ActiveMQFilterPredicate.Operation.EQUALS.toString(), clientId);
 
          String connectionsAsJsonString = 
serverControl.listConnections(filterString, 1, 50);
          JsonObject connectionsAsJsonObject = 
JsonUtil.readJsonObject(connectionsAsJsonString);


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information, visit: https://activemq.apache.org/contact


Reply via email to