1

我正在使用 ActiveMQ 提供的用于浏览队列的 UNIX 命令,并且我正在尝试浏览特定的队列,并指定一个 JMS 选择器。这就是我想要做的:

./activemq browse --amqurl tcp://host:port --msgsel "JMSMessageID='ID:XXXX'" QUEUE.FOO

通过 JMSMessageID 选择不起作用。

然后,我想通过 JMSText 进行一些过滤,匹配任何字符串。这里的问题是消息是 XML,也许我需要处理特殊字符。

./activemq browse --amqurl tcp://host:port --msgsel "JMSText='*<anyTag>SOMEVALUE</anyTag>*'" QUEUE.FOO

有人做过这样的过滤吗?有匹配任何字符串的消息?

4

2 回答 2

1

经过几个小时的尝试,终于找到了格式。

应该在外面使用双引号。在里面转义单引号。

要使用消息 ID 浏览确切的 1 条消息:

./activemq browse --msgsel "JMSMessageID=\'ID:wilsonyipoffice-12345-1560070020263-6:3:1:1:2\'" queueName

浏览来自同一主机的消息:

./activemq browse --msgsel "messageID='wilsonyipoffice-12345-1560070020263-6'" queueName

也可以在清除命令中使用。

于 2019-06-25T03:09:54.923 回答
0

据此: https ://github.com/apache/activemq/pull/104/commits/4fe17d080715ca712f39f796b6a43a722a3e1119

您必须在属性名称周围使用转义:\",即:

./activemq browse --amqurl tcp://host:port --msgsel \"JMSMessageID='ID:XXXX'\" QUEUE.FOO

使用通配符时,我仍然会出错。

于 2016-07-25T09:11:18.087 回答