2014-09-25 62 views
1

我的用例需要我重放在一个目的地上发送的消息(一个或多个)。什么用于在ActiveMQ中重放消息以及为什么?

可以有四种可能的组合:

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

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

在主题 - >队列CompositeTopic或VirtualTopic的情况下使用哪一个?何时和为什么?

哪一个在队列的情况下使用 - >主题CompositeQueue,MirroredQueue?什么时候和为什么

为同样的事情提供了不同的功能,所以必须有一些细微的差别,我们无法找到。有人可以分享这方面的任何信息吗?

回答

1

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

    • 虚拟主题是自动的,开箱,topic->队列订阅。他们工作得很好,解决了一些常规主题/持久订阅无法解决的问题。然而,虚拟主题是基于命名约定的,所以你需要坚持你配置的任何约定 - 在某些情况下这可能是一个缺点。
    • 如果您觉得您需要更多动态方法来控制应订阅某个主题的哪些队列,则只需恢复为复合。
    • 镜像队列是不是真的意味着用作改道。它更像是一个管理工具,可以连接所有队列以监控通过代理传递的消息。
    • 复合队列是处理一个到多个目的地的最简单方法。

但是,ActiveMQ的自带bundledApache Camel。如果你想拥有一组更丰富的选项来发送消息,你可以简单地将它发送给你有骆驼路由的队列(或主题),然后将它发送给它可能关心的人。

+0

VirtualTopic和Composite主题之间是否存在任何性能差异,当涉及到从主题向队列转发消息时,只有当我不在意命名时。我现在不能使用骆驼,所以只需要基本选项。 – learner 2014-09-26 06:13:19

+0

说实话,我不知道任何性能差异。我的直觉是你不应该太担心。衡量你的情况,如果你觉得它的性能差异很重要。虚拟主题是通过队列订阅主题的鼓励解决方案。 – 2014-09-26 07:37:04

相关问题