如何使用 WLST 删除 WL JMS 队列中仅早于 30 天的当前消息数

问题描述

我正在尝试使用 cmo.deleteMessages 来清理超过 30 天的消息。

connect(...)
domainRuntime()

print 'Cleaning Message from QUEUE:myqueue'
try:
        cd('ServerRuntimes/myserver/JMSRuntime/myserver.jms/JMSServers/myserver/Destinations/JMSMODULE!JMSmyserver@myqueue')
        cmo.deleteMessages("JMSTimestamp > 5200000000")
except:
        pass

然而,Weblogic 无法识别属性“JMSTimestamp > 5200000000”。它会删除所有消息。 当我将条目“JMSTimestamp > 5200000000”放入消息选择器 [在 wl 控制台中] 时,它会显示所有消息,而不是只有 30 天的消息 [5200000000 毫秒是 30 天]。

问题是 Weblogic 或 python 脚本无法识别格式“JMSTimestamp > 5200000000”。知道我错过了什么。

解决方法

我能够使用 Linux 中的修改日期命令工具以毫秒为单位创建时间戳。

$ date +%s%N | cut -b1-13
1617374452236

JMS 时间戳参数接受此格式并能够执行任务。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...