Hazelcast: будет ли прослушиватель, добавленный элементом, срабатывать на всех узлах, когда я добавляю и очищаю ISet в той же функции?

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

Согласно логике EntryProcessor, каждый запрос выполняется как процессор ввода, и я предполагаю, что он связно вызывает прослушиватель, добавленный элементом, на всех узлах. Мои первоначальные тесты также указывают на то же поведение. Но так как я имею дело с производственными данными, я хочу быть на 100% уверенным, что прослушиватель с добавленным элементом запускается во всех узлах, хотя в следующий момент я очищаю ISet в одном из узлов.

Пожалуйста, укажите мне на документацию, если вы знаете что-нибудь. Или, пожалуйста, поделитесь своим опытом, если вы столкнулись с подобной ситуацией.

1 ответ

Для требования "Я хочу быть на 100% уверен, что прослушиватель с добавленным элементом запускается во всех узлах", я бы предложил ReliableTopic, а также убедился, что ваши реализации прослушивателя тем используют ReliableMessageListener Интерфейс, как вы можете видеть, имеет дополнительные интерфейсы для хранения (storeSequence();) и получения порядкового номера (retrieveInitialSequence();), например, вы можете хранить эту информацию локально на клиенте. Таким образом, каждый клиент будет прослушивать события на основе идентификатора последовательности, что означает, что если он по какой-то причине отключится, он сможет возобновить работу с последнего идентификатора последовательности событий после восстановления. http://docs.hazelcast.org/docs/latest-development/manual/html/Distributed_Data_Structures/Reliable_Topic.html

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