负载均衡 MessageQ (ActiveMQ)
Posted
技术标签:
【中文标题】负载均衡 MessageQ (ActiveMQ)【英文标题】:Load balancing MessageQ (ActiveMQ) 【发布时间】:2015-02-09 09:05:48 【问题描述】:这是我的场景..
1) 基于 REST 的 Web 服务(例如 X)接收请求并将其放入 ActiveQ 2) Q 的另一端有一个监听器,它将读取和处理消息。这是异步的
我决定使用 ActiveMQ。 但试图找到一个解决方案,让我可以 Q 和 Q 侦听器可扩展。
1) 我有很多 X 实例正在运行。因此,Q 有多个刺激因素。 2)订购对我很重要。 3) 由于我的 REST 服务是会话较少的,我没有办法用相同的消息 ID 标记一堆请求。 4)现在,如果我使用单个 Q,它可以正常工作..
但我想扩大规模并使用多个 Q 和多个 Q 消费者而不影响订单。
有人可以建议我解决这个问题吗?
非常感谢,
【问题讨论】:
【参考方案1】:为了实现消息的排序,activeMQ 中定义了两种方式
1)基于 JMSXGroupID 的消息组
2)独家消费者
消息组比独占消费者更有用,因为在内部独占消费者一次只使用一个消费者,但如果该消费者失败,它会连接到其他消费者。
您可以在此处阅读 ActiveMQ 文档
http://activemq.apache.org/how-do-i-preserve-order-of-messages.html希望这会有所帮助! 祝你好运!
【讨论】:
【参考方案2】:我们可以使用以下类型的连接 URL 来利用 ActiveMQ 负载......
failover://(tcp://192.nnn.nn.nn:61616,tcp://192.nnn.nn.nn:61616)?randomize=false
randomize=true
将在主动模式下的两个 AciveMQ 之间进行消息洗牌,而不是仅仅通过 ActiveMQ 的故障转移......
可以在以下 Apache 站点链接下找到完整的参考资料......
http://activemq.apache.org/failover-transport-reference.html
但高可用性(即集群)配置仍然使您的应用程序稳定,尽管 Apache 必须提高 ActiveMQ 高可用性,因此事情可以更顺利地工作。
虽然因为KahaDB
限制负载平衡/容错配置受到限制。当前的 Apache ActiveMQ 高可用性配置可在以下链接中找到。
http://activemq.apache.org/clustering.html
但是KahaDB
有文件锁定限制,可以进行以下调整/替代配置方式...
1) 共享文件系统主从,- 一个共享文件系统,如 SAN http://activemq.apache.org/shared-file-system-master-slave.html
2)JDBC Master Slave,- 共享数据库 http://activemq.apache.org/jdbc-master-slave.html
3) 复制的 LevelDB 存储,- ZooKeeper 服务器 http://activemq.apache.org/replicated-leveldb-store.html
通过拥有 JCA 连接器,- 像 JBoss、Weblogic、Websphere、Geronimo、Glassfish 之类的 AS,- 可以将 ActimeMQ 修补作为一种资源适配器。并且使用 Apache Camel (karaf),可以完成 JBoss Fuse ESB 类产品 HA 和 ActiveMQ 集群。
【讨论】:
以上是关于负载均衡 MessageQ (ActiveMQ)的主要内容,如果未能解决你的问题,请参考以下文章