是否有可能或者是否有人知道更改发送给代理的 AMQ 消息的 JMSTimestamp 的方法?
Is it possible or does anyone know of a way to change the JMSTimestamp of an AMQ Message to send to the broker?
我正在编写一个使用 springboot java 框架与多个代理交互的应用程序。我正在利用 JMS 处理 browse/read 超过 4 小时的消息。主要问题是尝试为此功能生成单元测试。这是因为测试必须向代理发送一条旧消息,并且根据我阅读的文章 here,该文章解释了更改时间戳不会执行任何操作,因为一旦消息发送到代理它就会重置。基本上文章呈现任何可能的消息是旧的。有没有人有一些解决办法?或者知道我可以实现这个目标的方法吗?
我已经尝试设置 JMSTimestamp message.setJMSTimestamp(System.currentTimeMillis() - 14400000)
。在 运行 时间,它显示时间戳为 4 小时,但在 jconsole 中检查消息仅将其显示为当前 date/time(例如 Wed Apr 14 13:41:27 EDT 2021
)。
尝试模拟 4 小时后退用例的更好方法是使该时间 (4 小时) 可配置。并将 运行 设置为 10-15 秒以测试旧消息。您只需发送消息并在阅读前等待 15 秒即可完成此操作。
否则,当代理收到消息时,您的应用程序似乎是在时间戳而不是生产者发送的时间戳上旋转。
我正在编写一个使用 springboot java 框架与多个代理交互的应用程序。我正在利用 JMS 处理 browse/read 超过 4 小时的消息。主要问题是尝试为此功能生成单元测试。这是因为测试必须向代理发送一条旧消息,并且根据我阅读的文章 here,该文章解释了更改时间戳不会执行任何操作,因为一旦消息发送到代理它就会重置。基本上文章呈现任何可能的消息是旧的。有没有人有一些解决办法?或者知道我可以实现这个目标的方法吗?
我已经尝试设置 JMSTimestamp message.setJMSTimestamp(System.currentTimeMillis() - 14400000)
。在 运行 时间,它显示时间戳为 4 小时,但在 jconsole 中检查消息仅将其显示为当前 date/time(例如 Wed Apr 14 13:41:27 EDT 2021
)。
尝试模拟 4 小时后退用例的更好方法是使该时间 (4 小时) 可配置。并将 运行 设置为 10-15 秒以测试旧消息。您只需发送消息并在阅读前等待 15 秒即可完成此操作。
否则,当代理收到消息时,您的应用程序似乎是在时间戳而不是生产者发送的时间戳上旋转。