0

有什么办法可以清除阿尔忒弥斯的队列吗?我已经通过去净化了cd data/paging。这是我安装我的 artemis 代理的位置。

有一个名为haw.ioartemis 的 UI,虽然我已经删除了分页目录中的所有文件,但它仍然在 UI 上显示消息,在正确的情况下不应该存在。

请建议。

4

3 回答 3

4

从代理实例 bin 文件夹中的命令行:

artemis queue delete --user user --password password --name queue-name
于 2020-02-04T13:40:17.843 回答
3

Artemis Broker 提供了一个 REST 管理 API,用户可以使用它在运行时读取和更改代理的许多参数。因此,可以使用如下命令行从命令行清除队列:

curl -X POST -H "Content-Type: application/json" -d  '{ "type": "EXEC", "mbean": "org.apache.activemq.artemis:address=\"test.performance.queue\",broker=\"0.0.0.0\",component=addresses,queue=\"test.performance.queue\",routing-type=\"anycast\",subcomponent=queues", "operation": "removeMessages(java.lang.String)", "arguments": [ "" ] }' http://localhost:8161/jolokia/exec | jq .

在上面的示例中,我正在清除以test.performance.queue代理实例命名的队列的内容0.0.0.0。这些参数需要针对具体情况进行调整。

Obs:请注意,我jq .只是为了使响应 JSON 更漂亮(如果您不关心响应,则不需要这样做):

{
  "request": {
    "mbean": "org.apache.activemq.artemis:address=\"test.performance.queue\",broker=\"0.0.0.0\",component=addresses,queue=\"test.performance.queue\",routing-type=\"anycast\",subcomponent=queues",
    "arguments": [
      ""
    ],
    "type": "exec",
    "operation": "removeMessages(java.lang.String)"
  },
  "value": 13001,
  "timestamp": 1503740691,
  "status": 200
}

另一种可能性是使用BMIC工具,该工具提供对用于管理 ActiveMQ 6 和 Artemis 代理的多个 API 的访问(免责声明:我是该工具的维护者)。使用它,您可以使用以下命令执行相同的操作:

./bmic queue -u admin -p admin -s localhost --name test.performance.queue --purge

该工具优于 curl 命令的一个好处是您不需要关心代理参数,因为该工具将(尝试)为您进行发现。

于 2017-08-26T09:52:52.183 回答
1

有很多方法可以管理 Apache ActiveMQ Artemis 的实例。例如,您可以使用:

  • 通过 JConsole 或 JVisualVM 等 GUI 工具进行 JMX
  • 基于 Web 的控制台
  • 通过 Jolokia 进行 REST
  • 管理消息(例如通过核心、JMS、AMQP 等)

但是,您不能简单地从代理下方删除文件。

于 2017-09-01T20:03:56.367 回答