目前,我的activeMQ配置(非持久消息传递)允许我达到2000 msgs / sec。有四个队列和四个消费者消费这些消息。此配置中只有一个activeMQ代理。我希望获得大约5000 msgs / sec的更高吞吐量(增加额外的代理)。我对如何通过将各个队列分成单个ActiveMQ实例来实现这一点非常无能为力。什么是支持比单个实例更高吞吐量而不在实例之间拆分队列的拓扑?
答案 0 :(得分:0)
添加经纪人网络可能帮助。那就是如果你有相当数量的消费者和相当数量的生产者连接到不同的经纪人。
如果您有一个生产者或一个消费者,所有流量仍会超过其中一个经纪人,无论如何都会成为瓶颈。因此,使用AMQ代理实际设置服务器非常重要。
您还需要检查物理机器的瓶颈是什么。是I / O吗?中央处理器?内存使用/堆大小?甚至Linkspeed?将OS工具与visualvm一起使用以跟踪此情况。然后你至少知道接下来需要什么样的服务器。
在任何情况下,在几个节点上总是可以进行一些半手动负载平衡,天气是否使用经纪人网络。只需确保邮件通过某些代理进行路由,具体取决于其内容或其他内容。如果你无法以任何逻辑方式区分不同的消息类型 - 你可以做一些事情,比如在消息中找到一些整数(无论是客户端IP,昨天温度,摄氏或其他),然后执行number modulo <num brokers>
。然后将其路由到您选择的目的地。循环赛也是一种选择。几乎总有一种方法可以在几个代理之间以逻辑方式分配负载。