用什么来重播ActiveMQ中的消息以及为什么?

时间:2014-09-25 07:32:24

标签: java apache jms activemq middleware

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

可以有四种可能的组合:

  
      
  1. 主题 - >主题(CompositeTopic)
  2.   
  3. 主题 - >队列(CompositeTopic,VirtualTopic)
  4.   
  5. 队列 - >主题(CompositeQueue,MirroredQueue)
  6.   
  7. 队列 - >队列(CompositeQueue)
  8.   

是否还有其他方法可以重放其他列出的消息?

在主题的情况下使用哪一个 - >队列CompositeTopic还是VirtualTopic?何时以及为何?

在队列的情况下使用哪一个 - >主题CompositeQueue,MirroredQueue?何时以及为何

为同一件事提供了不同的功能,因此必须存在一些无法找到的细微差别。有人可以分享这方面的任何信息吗?

1 个答案:

答案 0 :(得分:1)

您列出了基本的"一对多"你有的选择。

    • 虚拟主题是自动的,开箱即用的,主题 - >队列订阅。它们工作得很好并解决了常规主题/持久订阅无法解决的一些问题。但是,虚拟主题基于命名约定,因此您需要遵守您配置的任何约定 - 在某些情况下这可能是一个缺点。
    • 如果您觉得需要更多动态方法来控制应订阅主题的队列,那么只需恢复为合成。
    • 镜像队列并不真正意味着用作重新路由。它是一个管理工具,用于连接所有队列以监控通过代理的消息。
    • 复合队列是处理一个到多个目的地的最简单方法。
  1. 但是,ActiveMQ带有bundled Apache Camel。如果您想拥有一组更丰富的选项来分发消息,您只需将其发送到您有Camel路由侦听的队列(或主题),然后将其分发给可能涉及的人。