是否有可能或有人知道更改 AMQ 消息的 JMSTimestamp 以发送给代理的方法?

问题描述

我正在编写一个应用程序,该应用程序使用 springboot java 框架与多个代理进行交互。我正在利用 JMS 浏览/阅读超过 4 小时的消息。主要问题是尝试为此功能生成单元测试。这是因为测试必须向代理发送一条旧消息,并且基于我阅读的文章 here,其中解释了更改时间戳没有任何作用,因为一旦消息发送到代理,它就会重置。基本上,文章呈现任何消息过时的机会。有没有人有一些工作?或者知道我可以实现这一目标的方法吗?

我已经尝试过设置 JMSTimestamp message.setJMSTimestamp(System.currentTimeMillis() - 14400000)。在运行时,它显示时间戳为 4 小时前,但在 jconsole 中检查消息仅将其显示为当前日期/时间(例如 Wed Apr 14 13:41:27 EDT 2021)。

解决方法

尝试模拟 4 小时后退用例更好的方法是使该时间(4 小时)可配置。并设置类似 10-15 秒的时间来运行旧消息的测试。您只需发送消息并在阅读前等待 15 秒即可完成此操作。

否则,当消息由代理接收而不是由生产者发送的时间戳时,您的应用程序似乎正在以时间戳为中心。