首先,我将解释这种情况。
我有两个WSO2 ESB节点(4.9.0)和两个Apache ActiveMQ节点,运行在四台不同的机器上。目前,ActiveMQ的每个ESB节点指向一个节点:WSO2 ESB JMS与ActiveMQ的平衡和故障转移
ESB1 -> AMQ1
ESB2 -> AMQ2
在这种情况下,如果一个AMQ节点出现故障,ESB的只有一个节点将能够生产和使用消息。
考虑解决此问题的方法并实现高可用性,我在ActiveMQ文档中找到a section,其中描述了用于配置故障转移的url语法。
所以,在每个ESB,我已配置连接于与被配置为文档提供者URL消息存储一个消息处理器说:
failover:(tcp://soamsg01:61616,tcp://soamsg02:61616)
现在消息存储过程“部分”解决。插入消息始终在每个ESB的同一个AMQ节点中进行,但是如果该节点关闭,则插入将转到另一个节点。
主要问题是消费。当消息处理器启动时,它随机选择一个AMQ节点进行连接。因此,两个ESB节点可能连接到AMQ的同一节点,导致其中一个队列永远不会被读取。
有办法解决这个问题吗?
感谢您的回答。在这种情况下,如果承载数据库的物理机发生故障,所有AMQ节点都将失败,或者数据库将在所有节点中复制? – elias
SAN上的主机kahadb数据文件,使用Oracle RAC等主动/被动或群集中的数据库... –