Java 在ActiveMQ中使用什么来重播消息?为什么?

Java 在ActiveMQ中使用什么来重播消息?为什么?,java,apache,jms,activemq,middleware,Java,Apache,Jms,Activemq,Middleware,我的用例需要我重播从一个目的地发送到另一个目的地(一个或多个)的消息 可以有四种可能的组合: 主题->主题(合成主题) 主题->队列(合成图片、虚拟图片) 队列->主题(合成队列、镜像队列) 队列->队列(组合队列) 除了列出的方法外,还有其他方法重播邮件吗 主题->队列合成图片或虚拟图片时使用哪一个?何时以及为什么? 队列->主题合成队列,镜像队列时使用哪一个?何时以及为什么 同一件东西有不同的特性,所以一定有一些我找不到的细微差别。有人可以分享这方面的信息吗?您列出了基本的“一对多”选项

我的用例需要我重播从一个目的地发送到另一个目的地(一个或多个)的消息

可以有四种可能的组合:

  • 主题->主题(合成主题)
  • 主题->队列(合成图片、虚拟图片)
  • 队列->主题(合成队列、镜像队列)
  • 队列->队列(组合队列)
  • 除了列出的方法外,还有其他方法重播邮件吗

    主题->队列合成图片或虚拟图片时使用哪一个?何时以及为什么?

    队列->主题合成队列,镜像队列时使用哪一个?何时以及为什么

    同一件东西有不同的特性,所以一定有一些我找不到的细微差别。有人可以分享这方面的信息吗?

    您列出了基本的“一对多”选项

    • 虚拟主题是自动、开箱即用的主题->队列订阅。它们工作得非常好,解决了一些常规主题/持久订阅无法解决的问题。然而,虚拟主题是基于命名约定的,所以您需要坚持您配置的任何约定,这在某些情况下可能是一个缺点
    • 如果您觉得需要更动态的方法来控制应该订阅某个主题的队列,那么只需返回到复合队列即可
    • 镜像队列实际上并不打算用作重新路由。它更像是一个管理工具,可以连接到所有队列以监视哪些消息正在通过代理传递
    • 复合队列是处理一对多目标的最简单方法

  • 但是,ActiveMQ附带了。如果您想拥有一组更丰富的选项来分派消息,只需将其发送到队列(或主题)您有一个驼峰路由,请侦听它,然后将其发送给可能关注的人。

    只有在我不关心命名的情况下,VirtualTopic和Composite topic在将消息从主题转发到队列时,在性能上是否存在差异。我现在不能使用camel,所以只需要基本选项。老实说,我不知道有任何性能差异。我的直觉是你不应该太担心它。如果您觉得性能上的%差异很重要,请测量您的场景。虚拟主题是受鼓励的通过队列订阅主题的解决方案。