Java 是否有可能或者有人知道如何更改AMQ消息的JMSTimestamp以发送给代理?

Java 是否有可能或者有人知道如何更改AMQ消息的JMSTimestamp以发送给代理?,java,spring-boot,activemq-artemis,amq,Java,Spring Boot,Activemq Artemis,Amq,我正在编写一个应用程序,它使用springboot java框架与多个代理进行接口。我正在利用JMS浏览/读取超过4小时的消息。主要问题是试图为该功能生成单元测试。这是因为测试必须向代理发送一条旧消息,并且基于我读到的文章,这篇文章解释了更改时间戳没有任何作用,因为一旦消息发送到代理,它就会重置。基本上,这篇文章提供了任何可能的消息是旧的。有人有工作吗?或者知道我能实现这一目标的方法吗 我已经尝试过设置JMSTimestamp消息。setJMSTimestamp(System.currentTi

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


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

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


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

您使用的是什么版本的AMQ?我相信我们使用的是AMQ7,我没有想到这一点,幸运的是,我已经有了可配置的时间,因此这很容易实现,而且很有效。谢谢@萨钦