带斜杠的 ActiveMQ jolokia 队列名称

ActiveMQ jolokia queue name with slashes

我正在尝试使用 ActiveMQ 的 jolokia 接口检索给定队列的队列大小。我的队列名称是 /some/queue,由于斜杠,我无法使 API 正常工作。

这是我尝试过的:

curl -XGET --user admin:admin "http://localhost:8161/api/jolokia/read/org.apache.activemq:brokerName=localhost,destinationName=/some/queue,destinationType=Queue,type=Broker/QueueSize" | python -m json.tool

curl -XGET --user admin:admin "http://localhost:8161/api/jolokia/read/org.apache.activemq:brokerName=localhost,destinationName=%2Fsome%2Fqueue,destinationType=Queue,type=Broker/QueueSize" | python -m json.tool

一个未编码 /,另一个编码为 %2F,两个查询 return javax.management.InstanceNotFoundException。 当我尝试检索其他队列时它起作用了。当我执行 destinationName=* 时,它会列出我的队列:

    "org.apache.activemq:brokerName=localhost,destinationName=/some/queue,destinationType=Queue,type=Broker": {
        "QueueSize": 0
    },

我应该如何在 jolokia 查询中编码 /

找到了,要在 jolokia 队列名称中转义 /,必须在斜线前使用 !(来源 https://jolokia.org/reference/html/protocol.html#escape-rules)。

所以正确的 CURL 是(在 bash ! 中必须用 \ 转义):

curl -XGET --user admin:admin "http://localhost:8161/api/jolokia/read/org.apache.activemq:brokerName=localhost,destinationName=\!/some\!/queue,destinationType=Queue,type=Broker/QueueSize" | python -m json.tool