这个问题是由于 Artemis 2.17.0 的一个错误引起的,它在持久性模式下无法正确检查消息是否过期。解决这个问题的方法是升级到 Artemis 2.18.0 或更高版本。
如果升级不可行,您可以在发送和接收消息时手动检查它们是否过期。以下是一个简单的示例代码,可以向您展示如何检查消息是否过期:
// 发送消息时设置过期时间 Message msg = session.createMessage(); msg.setJMSExpiration(System.currentTimeMillis() + 60000); // 一分钟后过期
// 检查消息是否过期 Message receivedMsg = consumer.receive(); if (receivedMsg != null && receivedMsg.getJMSExpiration() < System.currentTimeMillis()) { // 消息已过期 // 处理过期的消息 } else { // 消息未过期 // 处理未过期的消息 }