1

目前我的 activeMQ 配置(非持久消息传递)允许我达到 2000 msgs/sec。有四个队列和四个消费者在消费消息。此配置中只有一个 activeMQ 代理。我想实现大约 5000 msgs/sec 的更高吞吐量(添加额外的代理)。我对如何通过将单个队列拆分到单个 ActiveMQ 实例来实现这一点一无所知。哪些拓扑支持比单个实例更高的吞吐量而不在实例之间拆分队列?

4

1 回答 1

0

添加经纪人网络可能会有所帮助。也就是说,如果你有相当数量的消费者和相当数量的生产者连接到不同的经纪人。

如果您有一个生产者或单个消费者,所有流量仍将通过其中一个代理,无论如何都会使其成为瓶颈。因此,您使用 AMQ 代理对服务器的实际设置很重要。

您还需要检查物理机器的瓶颈是什么。是 I/O 吗?中央处理器?内存使用/堆大小?甚至连速?结合使用 OS 工具和 visualvm 来追踪它。然后你至少知道你接下来需要什么样的服务器。

在任何情况下,无论您是否使用代理网络,都可以在多个节点上进行一些半手动的负载平衡。只需确保消息根据其内容或其他内容通过某些代理进行路由。如果您无法以任何逻辑方式区分不同的消息类型 -​​ 您可以执行一些操作,例如在消息中查找一些整数(无论是客户端 IP、昨天摄氏温度等),然后执行number modulo <num brokers>. 然后将其路由到您选择的目的地。循环赛也是一种选择。几乎总有一种方法可以在多个代理之间以合乎逻辑的方式分配负载。

于 2013-09-05T06:02:22.587 回答