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 <raks...@gmail.com> Authored: Sun Apr 22 22:52:46 2018 -0400 Committer: Michael Andre Pearce <michael.andre.pea...@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));