ActiveMQ代理能够处理的最大主题数是多少?

时间:2016-01-27 18:53:26

标签: java performance jms activemq

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

选项1

有一个像

这样的层次结构
  • source1中。*
  • 源2。*
  • ...

和智能消费者(在应用程序方面)只是放弃了不需要的信息类型。

选项2

有一个像

这样的层次结构
  • source1.type1
  • source1.type2
  • source1.type3
  • ...
  • source2.type1
  • source2.type2
  • source2.type3
  • ...

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

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

Option1可能允许更多的来源,但更多的工作在消费者方面(以及网络上的更多流量),而Option2应该在网络流量上更有效(并且希望性能)但是在代理资源上它可能更重消耗。

什么是最佳选择?

非常感谢

cghersi

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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

这不能回答主题的最大限制是什么的问题。主题和队列会增加代理的开销。它们被注册为JMX MBean并显示在Web控制台gui中。他们还可能分配内部线程和内存资源。要弄清楚一些主题是否有效 - 最好用运行它的设置来测试它。您的milage可能会有所不同