我面临一个设计问题,我希望只有一个 JMS 生产者向两个消费者发送消息。只有两台服务器,生产者将开始生成消息,这些消息将被负载平衡(循环)给两个消费者。
在一台服务器发生故障的假设情况下,我确实有一种机制,因此将在剩余的服务器中激活一个新的生产者。但是在宕机的服务器中正在处理的消息会发生什么?
它们会被重新分配给剩余的服务器,从而由剩余的消费者处理吗?否则他们会迷路吗?
如果最后一种情况属实,那将是另一个问题。生产者根据 NAS 中的文件创建消息,因此当服务器出现故障时,新激活的生产者将开始根据 NAS 的内容创建消息,并且可能会复制消息(但这种情况已得到处理)问题是,如果关闭的服务器不是具有活动生产者的服务器,然后当服务器再次启动时,它不会有消息要消耗,也不会有消息替换丢失的消息。
如何实现设计,以免消息丢失?
注意:当一台服务器出现故障时,日志和绑定都会丢失。