0

我们有一个ReliableMessageListener通过实现同步它在集群中保存的一些数据结构onMessage

集群由三个节点组成。我们注意到其中一个主题不同步,并且由于消息丢失而被终止,由环形缓冲区检测到,因为我们得到一个“ Terminating MessageListener, ... Reason: Underlying ring buffer data related to reliable topic is lost”异常。发生的情况是该节点仍处于启动状态,但该特定侦听器没有从其他两个节点获取事件/消息,而他们确实从中获取了事件/消息。

我们对这个特定主题进行了事实上的脑裂。

我们的消息监听器配置为isLossTolerant = false, 和isTerminal = false

我试图了解什么被认为是处理这种情况并从中恢复的好策略。

例如,再次尝试订阅此主题是一个好习惯吗?发送消息以清除集群中其他节点的数据是一种好习惯吗?在环形缓冲区不同步后,他们甚至会收到消息吗?

谢谢

4

1 回答 1

1

该消息Reason: Underlying ring buffer data related to the reliable topic is lost意味着您尝试读取的数据不再可用,因为它已被底层 Ringbuffer 中的新数据覆盖 - 您的生产者可能比您的消费者更快。

当这种情况发生时,ReliableTopic 仍然可用,您可以注册一个新的监听器。

为了防止这种情况发生,您可以增加底层环形缓冲区的大小(提供与可靠主题同名的环形缓冲区配置)或配置TopicOverloadPolicy。有关详细信息,请参阅文档

于 2022-01-26T13:43:37.900 回答