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/08/03 18:26:52 UTC

[1/2] activemq-artemis git commit: [ARTEMIS-2008]Add a CLI command to purge queue

Repository: activemq-artemis
Updated Branches:
  refs/heads/master ed643e479 -> d13b42def


[ARTEMIS-2008]Add a CLI command to purge queue


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

Branch: refs/heads/master
Commit: 3c5b050dff611ca1bb315a3424de2707053c12c8
Parents: ed643e4
Author: Shailendra Kumar Singh <sh...@gmail.com>
Authored: Thu Aug 2 09:10:46 2018 +0530
Committer: Clebert Suconic <cl...@apache.org>
Committed: Fri Aug 3 14:19:47 2018 -0400

----------------------------------------------------------------------
 .../apache/activemq/artemis/cli/Artemis.java    |  5 +-
 .../artemis/cli/commands/queue/PurgeQueue.java  | 72 ++++++++++++++++++++
 .../tests/integration/cli/QueueCommandTest.java | 29 ++++++++
 3 files changed, 104 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/3c5b050d/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/Artemis.java
----------------------------------------------------------------------
diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/Artemis.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/Artemis.java
index 556bcd8..657055e 100644
--- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/Artemis.java
+++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/Artemis.java
@@ -46,6 +46,7 @@ import org.apache.activemq.artemis.cli.commands.migration1x.Migrate1X;
 import org.apache.activemq.artemis.cli.commands.queue.CreateQueue;
 import org.apache.activemq.artemis.cli.commands.queue.DeleteQueue;
 import org.apache.activemq.artemis.cli.commands.queue.HelpQueue;
+import org.apache.activemq.artemis.cli.commands.queue.PurgeQueue;
 import org.apache.activemq.artemis.cli.commands.queue.UpdateQueue;
 import org.apache.activemq.artemis.cli.commands.tools.HelpData;
 import org.apache.activemq.artemis.cli.commands.tools.PrintData;
@@ -153,8 +154,8 @@ public class Artemis {
       String instance = artemisInstance != null ? artemisInstance.getAbsolutePath() : System.getProperty("artemis.instance");
       Cli.CliBuilder<Action> builder = Cli.<Action>builder("artemis").withDescription("ActiveMQ Artemis Command Line").withCommand(HelpAction.class).withCommand(Producer.class).withCommand(Consumer.class).withCommand(Browse.class).withCommand(Mask.class).withDefaultCommand(HelpAction.class);
 
-      builder.withGroup("queue").withDescription("Queue tools group (create|delete|update|stat) (example ./artemis queue create)").
-         withDefaultCommand(HelpQueue.class).withCommands(CreateQueue.class, DeleteQueue.class, UpdateQueue.class, StatQueue.class);
+      builder.withGroup("queue").withDescription("Queue tools group (create|delete|update|stat|purge) (example ./artemis queue create)").
+         withDefaultCommand(HelpQueue.class).withCommands(CreateQueue.class, DeleteQueue.class, UpdateQueue.class, StatQueue.class, PurgeQueue.class);
 
       builder.withGroup("address").withDescription("Address tools group (create|delete|update|show) (example ./artemis address create)").
          withDefaultCommand(HelpAddress.class).withCommands(CreateAddress.class, DeleteAddress.class, UpdateAddress.class, ShowAddress.class);

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/3c5b050d/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/queue/PurgeQueue.java
----------------------------------------------------------------------
diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/queue/PurgeQueue.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/queue/PurgeQueue.java
new file mode 100644
index 0000000..f5d3d7e
--- /dev/null
+++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/queue/PurgeQueue.java
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.activemq.artemis.cli.commands.queue;
+
+import io.airlift.airline.Command;
+import io.airlift.airline.Option;
+import org.apache.activemq.artemis.api.core.client.ClientMessage;
+import org.apache.activemq.artemis.api.core.management.ManagementHelper;
+import org.apache.activemq.artemis.api.core.management.ResourceNames;
+import org.apache.activemq.artemis.cli.commands.ActionContext;
+import org.apache.activemq.artemis.cli.commands.AbstractAction;
+
+@Command(name = "purge", description = "purge a queue")
+public class PurgeQueue extends AbstractAction {
+
+   @Option(name = "--name", description = "queue name")
+   String name;
+
+   @Override
+   public Object execute(ActionContext context) throws Exception {
+      super.execute(context);
+      purgeQueue(context);
+      return null;
+   }
+
+   private void purgeQueue(final ActionContext context) throws Exception {
+      performCoreManagement(new ManagementCallback<ClientMessage>() {
+         @Override
+         public void setUpInvocation(ClientMessage message) throws Exception {
+            ManagementHelper.putOperationInvocation(message, ResourceNames.QUEUE + getName(), "removeAllMessages");
+         }
+
+         @Override
+         public void requestSuccessful(ClientMessage reply) throws Exception {
+            context.out.println("Queue " + getName() + " purged successfully.");
+         }
+
+         @Override
+         public void requestFailed(ClientMessage reply) throws Exception {
+            String errMsg = (String) ManagementHelper.getResult(reply, String.class);
+            context.err.println("Failed to purge queue " + getName() + ". Reason: " + errMsg);
+         }
+      });
+   }
+
+   public void setName(String name) {
+      this.name = name;
+   }
+
+   public String getName() {
+      if (name == null) {
+         name = input("--name", "Please provide the destination name:", "");
+      }
+
+      return name;
+   }
+}

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/3c5b050d/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cli/QueueCommandTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cli/QueueCommandTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cli/QueueCommandTest.java
index b4e8fb6..c581e69 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cli/QueueCommandTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cli/QueueCommandTest.java
@@ -27,6 +27,7 @@ import org.apache.activemq.artemis.cli.commands.AbstractAction;
 import org.apache.activemq.artemis.cli.commands.ActionContext;
 import org.apache.activemq.artemis.cli.commands.queue.CreateQueue;
 import org.apache.activemq.artemis.cli.commands.queue.DeleteQueue;
+import org.apache.activemq.artemis.cli.commands.queue.PurgeQueue;
 import org.apache.activemq.artemis.cli.commands.queue.UpdateQueue;
 import org.apache.activemq.artemis.core.server.Queue;
 import org.apache.activemq.artemis.core.server.QueueQueryResult;
@@ -339,6 +340,34 @@ public class QueueCommandTest extends JMSTestBase {
       assertFalse(server.queueQuery(queueName).isExists());
    }
 
+   @Test
+   public void testPurgeQueue() throws Exception {
+      SimpleString queueName = new SimpleString("purgeQueue");
+
+      CreateQueue command = new CreateQueue();
+      command.setName(queueName.toString());
+      command.setAutoCreateAddress(true);
+      command.setAnycast(true);
+      command.execute(new ActionContext());
+
+      PurgeQueue purge = new PurgeQueue();
+      purge.setName(queueName.toString());
+      purge.execute(new ActionContext(System.in, new PrintStream(output), new PrintStream(error)));
+      checkExecutionPassed(purge);
+   }
+
+   @Test
+   public void testPurgeQueueDoesNotExist() throws Exception {
+      SimpleString queueName = new SimpleString("purgeQueue");
+
+      PurgeQueue purge = new PurgeQueue();
+      purge.setName(queueName.toString());
+      purge.execute(new ActionContext(System.in, new PrintStream(output), new PrintStream(error)));
+      checkExecutionFailure(purge, "AMQ119067: Cannot find resource with name queue." + queueName);
+
+      assertFalse(server.queueQuery(queueName).isExists());
+   }
+
    private void checkExecutionPassed(AbstractAction command) throws Exception {
       String fullMessage = output.toString();
       System.out.println("output: " + fullMessage);


[2/2] activemq-artemis git commit: This closes #2210

Posted by cl...@apache.org.
This closes #2210


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

Branch: refs/heads/master
Commit: d13b42def720e1e9bfb99b8d8a520082be90f042
Parents: ed643e4 3c5b050
Author: Clebert Suconic <cl...@apache.org>
Authored: Fri Aug 3 14:19:48 2018 -0400
Committer: Clebert Suconic <cl...@apache.org>
Committed: Fri Aug 3 14:19:48 2018 -0400

----------------------------------------------------------------------
 .../apache/activemq/artemis/cli/Artemis.java    |  5 +-
 .../artemis/cli/commands/queue/PurgeQueue.java  | 72 ++++++++++++++++++++
 .../tests/integration/cli/QueueCommandTest.java | 29 ++++++++
 3 files changed, 104 insertions(+), 2 deletions(-)
----------------------------------------------------------------------