【问题标题】:What to use to replay messages in ActiveMQ and Why?在 ActiveMQ 中使用什么来重放消息以及为什么?
【发布时间】:2014-11-19 21:34:16
【问题描述】:

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

有四种可能的组合:

  1. 主题 -> 主题(复合主题)
  2. 主题 -> 队列(复合主题、虚拟主题)
  3. 队列 -> 主题(复合队列、镜像队列)
  4. 队列 -> 队列(复合队列)

除了列出的方法之外,还有其他方法可以重播消息吗?

在 Topic -> Queue CompositeTopic 或 VirtualTopic 的情况下使用哪一个?何时以及为什么?

在 Queue -> Topic CompositeQueue, MirroredQueue 的情况下使用哪一个?时间和原因

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

【问题讨论】:

    标签: java apache jms activemq middleware


    【解决方案1】:

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

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

    但是,ActiveMQ 带有bundledApache Camel。如果您想拥有更丰富的选项集来分派消息,您可以简单地将其发送到您有 Camel 路由侦听的队列(或主题),然后将其分派给它可能关心的人。

    【讨论】:

    • 只有在我不关心命名的情况下,将消息从主题转发到队列时,VirtualTopic 和复合主题之间是否存在性能差异。我现在不能使用骆驼,所以只需要基本的选项。
    • 老实说,我不知道任何性能差异。我的直觉是你不应该太担心它。如果您认为性能差异的百分比很重要,请测量您的场景。虚拟主题是鼓励通过队列订阅主题的解决方案。
    猜你喜欢
    • 2010-12-20
    • 1970-01-01
    • 2011-06-18
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 2012-05-08
    • 2013-08-18
    相关资源
    最近更新 更多