能否删除ActiveMQ Artemis DLQ中无属性的消息?JMX过滤支持NULL吗?
关于ActiveMQ Artemis DLQ消息删除的过滤表达式问题
完全可以使用IS NULL的过滤条件来匹配未设置指定属性的消息,进而通过removeMessages(string)操作删除它们。
具体用法
假设你要删除DLQ中没有设置targetAttribute属性的消息,对应的过滤表达式直接写:
targetAttribute IS NULL
将这个表达式传入removeMessages方法即可——不管是通过JMX控制台手动调用,还是用JMX客户端代码执行,都能准确匹配到那些未携带该属性的消息。
注意事项
- 属性名称区分大小写,要和消息实际的属性名完全一致,否则会匹配不到目标消息
- 执行删除前,建议先通过
listMessages(string)方法用同样的过滤表达式预览匹配结果,确认无误后再执行删除操作,避免误删有效消息 - 如果要反向匹配(删除已设置该属性的消息),可以用
targetAttribute IS NOT NULL
内容的提问来源于stack exchange,提问作者Carla
相关产品推荐
相关产品推荐

