Jms 主动MQ负载平衡以实现高吞吐量

Jms 主动MQ负载平衡以实现高吞吐量,jms,activemq,Jms,Activemq,目前,我的activeMQ配置(非持久性消息传递)允许我达到每秒2000毫秒。有四个队列和四个消费者在使用这些消息。此配置中只有一个activeMQ代理。我希望实现约5000毫秒/秒的更高吞吐量(添加额外的代理)。我不知道如何在不将单个队列拆分到单个ActiveMQ实例的情况下实现这一点。哪些拓扑支持比单个实例更高的吞吐量而不在实例之间拆分队列?添加代理网络可能会有所帮助。也就是说,如果你有相当数量的消费者和相当数量的生产者连接到不同的经纪人 如果只有一个生产者或消费者,所有流量仍将通过其中一个

目前,我的activeMQ配置(非持久性消息传递)允许我达到每秒2000毫秒。有四个队列和四个消费者在使用这些消息。此配置中只有一个activeMQ代理。我希望实现约5000毫秒/秒的更高吞吐量(添加额外的代理)。我不知道如何在不将单个队列拆分到单个ActiveMQ实例的情况下实现这一点。哪些拓扑支持比单个实例更高的吞吐量而不在实例之间拆分队列?

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

如果只有一个生产者或消费者,所有流量仍将通过其中一个代理,在任何情况下都会成为瓶颈。因此,使用AMQ代理实际设置服务器非常重要

您还需要检查物理机器的瓶颈是什么。是I/O吗?中央处理器?内存使用/堆大小?甚至连速?将操作系统工具与visualvm一起使用以跟踪此问题。然后你至少知道你接下来需要什么样的服务器


在任何情况下,无论您是否使用代理网络,都可以在多个节点上进行半手动负载平衡。只需确保消息通过特定的代理路由,这取决于它们的内容或诸如此类的内容。如果您无法以任何逻辑方式区分不同的消息类型,您可以在消息中查找一些整数(无论是客户端IP、昨天的摄氏温度还是其他),然后执行数字模运算。然后将其发送到您选择的目的地。循环制也是一种选择。几乎总是有一种方法可以在多个代理之间以逻辑方式分配负载。

如何管理事务?消息的大小是多少?您能否将一些消息逻辑地组合在一条消息中?有多少线程正在发送,有多少线程正在接收?我们不需要事务,只需发送和忘记类型的消息。典型的消息负载约为1K。大约有10个代理发送,而总共只有4个线程接收。分组消息需要修改代码,这是不可能的。查看任何配置和/或拓扑更改如何添加代理群集?请参阅,您是否能够同时接收消息?然后,您可能只想添加更多消费者线程。