【发布时间】:2014-04-25 06:40:28
【问题描述】:
我在一家公司工作,我们正在考虑使用 Mule ESB。我们需要在集群配置中设置 Mule,以获得 Mule 所创造的 Mule 高可用性 (HA) 集群。
现在,我们需要将传入的消息保存到队列中,以防断电或磁盘故障。据我了解,我们可以使用默认的 Mule 对象存储,它将消息“持久化”到共享内存网格。但是,我的第一个想法是,如果断电导致整个集群停止运行,这将不会有任何好处。
我们的另一个选择是使用单独的队列产品,例如 RabbitMQ 或 ActiveMQ。但是,这些可以与 HA 集群集成吗?这些产品中是否有任何机制可以确保两台机器不会同时接收到相同的消息?
考虑这种情况(基于观察者模式):
- Mule 收到一条消息,将其放入队列并以 OK 响应 发送给传递消息的客户端。
- Mule 从队列中取出一条消息,并尝试将其传递给订阅者。
- 订阅者接受消息,Mule 将其从队列中移除。
如果 HA 集群中的另一个 Mule 实例尝试接收上述 2 和 3 之间的消息,会发生什么情况?是否有一种机制,Mule 可以指示从队列中提取消息以“尝试传递”,但是如果传递失败,如果传递失败,则将队列上的消息更新为“未传递”?
【问题讨论】:
标签: rabbitmq mule high-availability