是否有一种简单的方法来创建通过队列发送的每条消息的副本,以便在需要时,用户可以浏览以前传输的消息列表并通过单击按钮多次重播它们?
我有程序X发送消息到队列,程序Y然后读取它.我希望能够重播以前发送的消息,而不必返回到程序X并再次重新生成它.
最佳答案
如果你没有太多的消息或太多的队列,有很简单的入门方法.
原文链接:https://www.f2er.com/java/438271.html首先,您可以将消息设置为“复制队列”.使用此策略,每个队列必须执行一次此操作.在activemq.xml中像这样
然后使用工具浏览COPY队列上的消息,如果需要,将它们重新发送到OUT队列.我喜欢Hermes JMS这样的工具.
如果你想要一些更有趣的东西,你可以在mirrored queues阅读.
还有另一种简单的方法可以轻松复制所有消息.
使用与activemq捆绑在一起的apache-camel.
camel.xml中的此配置将实现所有消息自动复制到以FOO开头的队列.*
此路由需要一些复制队列名称的修复,但在priniple中它可用作窃听的一次性配置.
这里一个非常重要的方面是,如果存储所有消息,您的服务器将随着时间的推移而填满.我建议你在ActiveMQ memory management阅读,或者只是在给定的时间范围内保留邮件副本.这可以是自动的,因为发送系统实际上可以设置message expiry,以便在数天/周/月之后自动删除消息.