You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by mi...@apache.org on 2018/11/21 19:58:25 UTC

[2/2] activemq-artemis git commit: ARTEMIS-1828 CLI option for queue's routing-type

ARTEMIS-1828 CLI option for queue's routing-type

Optionally specify a queue routing type when creating a broker. Example:
"create --queues myqueue,mytopic:multicast". Defaults to anycast if
unspecified.


Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/92fcff5f
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/92fcff5f
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/92fcff5f

Branch: refs/heads/master
Commit: 92fcff5ff48d12cf6d951213172515a995ef7d82
Parents: ddd79d8
Author: King Ramos <ra...@gmail.com>
Authored: Sun Apr 22 22:52:46 2018 -0400
Committer: Michael Andre Pearce <mi...@me.com>
Committed: Wed Nov 21 19:59:45 2018 +0000

----------------------------------------------------------------------
 .../activemq/artemis/cli/commands/Create.java   | 21 +++++++++++++++-----
 .../apache/activemq/cli/test/ArtemisTest.java   | 10 +++++++---
 2 files changed, 23 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/92fcff5f/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Create.java
----------------------------------------------------------------------
diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Create.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Create.java
index e6e61e0..cde6515 100644
--- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Create.java
+++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Create.java
@@ -39,6 +39,7 @@ import io.airlift.airline.Arguments;
 import io.airlift.airline.Command;
 import io.airlift.airline.Option;
 import org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration;
+import org.apache.activemq.artemis.api.core.RoutingType;
 import org.apache.activemq.artemis.cli.CLIException;
 import org.apache.activemq.artemis.cli.commands.util.HashUtil;
 import org.apache.activemq.artemis.cli.commands.util.SyncCalculation;
@@ -226,7 +227,7 @@ public class Create extends InputAbstract {
    @Option(name = "--no-web", description = "Remove the web-server definition from bootstrap.xml")
    private boolean noWeb;
 
-   @Option(name = "--queues", description = "Comma separated list of queues.")
+   @Option(name = "--queues", description = "Comma separated list of queues with the option to specify a routing type. (ex: --queues myqueue,mytopic:multicast)")
    private String queues;
 
    @Option(name = "--addresses", description = "Comma separated list of addresses ")
@@ -890,10 +891,20 @@ public class Create extends InputAbstract {
       printWriter.println();
 
       for (String str : getQueueList()) {
-         printWriter.println("         <address name=\"" + str + "\">");
-         printWriter.println("            <anycast>");
-         printWriter.println("               <queue name=\"" + str + "\" />");
-         printWriter.println("            </anycast>");
+         String[] seg = str.split(":");
+         String name = seg[0].trim();
+         // default routing type to anycast if not specified
+         String routingType = (seg.length == 2 ? seg[1].trim() : "anycast");
+         try {
+            RoutingType.valueOf(routingType.toUpperCase());
+         } catch (Exception e) {
+            e.printStackTrace();
+            System.err.println("Invalid routing type: " + routingType);
+         }
+         printWriter.println("         <address name=\"" + name + "\">");
+         printWriter.println("            <" + routingType + ">");
+         printWriter.println("               <queue name=\"" + name + "\" />");
+         printWriter.println("            </" + routingType + ">");
          printWriter.println("         </address>");
       }
       for (String str : getAddressList()) {

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/92fcff5f/artemis-cli/src/test/java/org/apache/activemq/cli/test/ArtemisTest.java
----------------------------------------------------------------------
diff --git a/artemis-cli/src/test/java/org/apache/activemq/cli/test/ArtemisTest.java b/artemis-cli/src/test/java/org/apache/activemq/cli/test/ArtemisTest.java
index 3f9d8a7..23493b9 100644
--- a/artemis-cli/src/test/java/org/apache/activemq/cli/test/ArtemisTest.java
+++ b/artemis-cli/src/test/java/org/apache/activemq/cli/test/ArtemisTest.java
@@ -36,6 +36,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.activemq.artemis.api.core.Pair;
+import org.apache.activemq.artemis.api.core.RoutingType;
 import org.apache.activemq.artemis.api.core.SimpleString;
 import org.apache.activemq.artemis.api.core.client.ClientSession;
 import org.apache.activemq.artemis.api.core.client.ClientSessionFactory;
@@ -557,7 +558,7 @@ public class ArtemisTest extends CliTestBase {
       File instanceFolder = temporaryFolder.newFolder(folderName);
 
       setupAuth(instanceFolder);
-      String queues = "q1,q2";
+      String queues = "q1,q2:multicast";
       String addresses = "a1,a2";
 
 
@@ -575,8 +576,11 @@ public class ArtemisTest extends CliTestBase {
               ClientSessionFactory factory = locator.createSessionFactory();
               ClientSession coreSession = factory.createSession("admin", "admin", false, true, true, false, 0)) {
             for (String str : queues.split(",")) {
-               ClientSession.QueueQuery queryResult = coreSession.queueQuery(SimpleString.toSimpleString(str));
-               assertTrue("Couldn't find queue " + str, queryResult.isExists());
+               String[] seg = str.split(":");
+               RoutingType routingType = RoutingType.valueOf((seg.length == 2 ? seg[1] : "anycast").toUpperCase());
+               ClientSession.QueueQuery queryResult = coreSession.queueQuery(SimpleString.toSimpleString(seg[0]));
+               assertTrue("Couldn't find queue " + seg[0], queryResult.isExists());
+               assertEquals(routingType, queryResult.getRoutingType());
             }
             for (String str : addresses.split(",")) {
                ClientSession.AddressQuery queryResult = coreSession.addressQuery(SimpleString.toSimpleString(str));