Hazelcast Maploader Слушатель
У меня есть один член, который имеет MapStore/Loader, который читает / пишет в базу данных, а также клиент, который добавляет прослушиватель EntryAddedListener.
Если член отклонен, я вижу, что прослушиватели, добавленные к записи, запускаются, поскольку MapLoader перезагружает данные из базы данных.
Однако это говорит клиенту, что новые записи были добавлены, тогда как на самом деле они "добавляются" только из-за загрузки узла.
По сути, я не хочу, чтобы эти слушатели были запущены в результате начальной загрузки MapLoader карты - их следует запускать только после этого.
Как мне остановить эти события MapLoader, запускающие слушателей EntryAdded?
1 ответ
Там нет никакого способа сделать это. Загрузка записи с использованием MapLoader - это, по сути, добавление записи на карту.
Что вы можете сделать, это добавить этих слушателей после загрузки карты. Если ваш loadMode установлен в EAGER, легко определить, когда загрузка полностью закончилась.
Чтобы дождаться окончания загрузки, вы можете вызвать операцию map.size(). По окончании карта полностью заполняется.
Можно различать события ADD и LOAD, начиная с Hazelcast v3.11. Эта функция была введена как часть проблемы hazelcast-13181.
Также вы можете проверить Java-документы для EntryAddedListener и EntryLoadedListener для получения более подробной информации.