Hazelcast, восстановление члена MessageListener после завершения из-за потери сообщения

У нас есть который синхронизирует некоторые структуры данных, хранящиеся в кластере, с помощью выполнение.

Кластер состоит из трех узлов. Мы заметили, что одна из тем не синхронизируется и была прекращена из-за потери сообщения, обнаруженной кольцевым буфером, так как мы получаем " " исключение. Что происходит, так это то, что этот узел все еще работает, но этот конкретный прослушиватель не получает события/сообщения от двух других узлов, в то время как они получают их от него.

Мы добираемся до фактического разделения мозга по этой конкретной теме.

Наш прослушиватель сообщений настроен как , и .

Я пытаюсь понять, что считается хорошей стратегией для обработки такого сценария и восстановления после него.

Например, стоит ли снова пытаться подписаться на эту тему? Является ли хорошей практикой отправка сообщения об очистке данных от других узлов в кластере? Получат ли они сообщение после того, как кольцевой буфер выйдет из строя?

Спасибо

1 ответ

Сообщение Reason: Underlying ring buffer data related to the reliable topic is lostозначает, что данные, которые вы пытаетесь прочитать, больше не доступны, потому что они были перезаписаны более новыми данными в базовом кольцевом буфере - ваш производитель, вероятно, быстрее, чем ваши потребители.

Когда возникает такая ситуация, ReliableTopic по-прежнему можно использовать, и вы можете зарегистрировать новый прослушиватель.

Чтобы предотвратить возникновение такой ситуации, вы можете либо увеличить размер базового кольцевого буфера (предоставить конфигурацию кольцевого буфера с тем же именем, что и надежный раздел), либо настроить TopicOverloadPolicy. Подробности смотрите в документации .

Другие вопросы по тегам