【问题标题】:What is the maximum number of topics an ActiveMQ broker is able to handle?ActiveMQ 代理能够处理的最大主题数是多少?
【发布时间】:2016-05-04 21:29:00
【问题描述】:

我有以下一般性问题:给定 N 个信息源,每个源有 M 种可能的信息类型,在 ActiveMQ 中处理主题层次结构的最有效方法是什么? 通常 N 可以是 100s 到 10000s,而 M 应该是 10。

选项 1

有类似的层次结构

  • source1.*
  • source2.*
  • ...

以及(在应用程序端)只是丢弃不需要的信息类型的聪明消费者。

选项 2

有类似的层次结构

  • source1.type1
  • source1.type2
  • source1.type3
  • ...
  • source2.type1
  • source2.type2
  • source2.type3
  • ...

与接受每条消息的愚蠢消费者。

==================================

选项 1 可能允许更多的来源,但在消费者方面做更多的工作(以及网络上的更多流量),而选项 2 在网络流量上应该更有效(希望性能更好),但它可能对代理资源更重消费。

最好的选择是什么?

非常感谢

cghersi

【问题讨论】:

    标签: java performance jms activemq


    【解决方案1】:

    多个来源发布到同一主题并没有错。通常,将主题和队列保持在可管理的水平是个好主意。

    我会选择主题 Type1、Type2、..、Type10

    您可以使用字符串属性将元数据附加到带有附加信息的已发布消息。这样,消费者可以使用JMS selector 仅订阅他们真正想要的数据,其中可能包括数据源、信息类型、日期、优先级等。

    MessageConsumer consumer = session.createConsumer(topic, "source = 'EU-market'");
    

    如果有 10 乘以 1000 个主题,则每个客户端都必须打开多个主题的侦听器才能获取所有信息。通常,侦听器需要线程,这需要很大一部分堆栈分配。最好让客户通过选择器来决定。

    这并没有回答主题的最大限制是多少的问题。主题和队列增加了代理的开销。它们注册为 JMX MBean 并显示在 Web 控制台 gui 中。他们还可能分配内部线程和内存资源。要确定一些主题是否有效 - 最好使用旨在运行它的设置对其进行测试。您的里程可能会有所不同

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-19
      • 2014-05-17
      • 1970-01-01
      • 1970-01-01
      • 2019-09-03
      • 2016-07-30
      • 1970-01-01
      • 2014-06-30
      相关资源
      最近更新 更多