2016-12-27 10 views
0

Есть ли способ выполнить фрагмент кода на узле hazelcast (версия 3.4) после запуска узла?Создание и заполнение карты Hazelcast при запуске узла

Идея: после того, как один из узлов ореха лезвика начинает создавать карту (не дожидаясь выполнения .getMap на стороне клиента) и popualte с данными из базы данных, так что когда клиент запрашивает данные, карта уже заполнена.

ответ

0

Это может быть решена путем определения таможенной службы в hazelcast.xml. Конструктор службы активируется на узлах, и оттуда можно запросить и заполнить карту лещей. Но вызов getMap должен выполняться в новой теме

1

Да. Вам необходимо реализовать MapLoader для вашего IMap, а затем использовать метод MapLoader.loadAllKeys() для инициализации карты горячими клавишами.

Это то, что документация говорит:

Вы можете использовать MapLoader.loadAllKeys API для предварительного заполнения в памяти карты, когда карта первый прикоснулся б/у. Если MapLoader.loadAllKeys возвращает NULL, тогда ничего не будет загружено. Ваша реализация MapLoader.loadAllKeys может вернуть все или некоторые из ключей . Например, вы можете выбирать и возвращать только горячие клавиши. MapLoader.loadAllKeys - это самый быстрый способ предварительного заполнения карты , так как Hazelcast оптимизирует процесс загрузки, если каждый узел загрузит принадлежащую ему часть записей.

3.5 Map Persistence Documentation Link

+0

Проблема заключается в том, что loadAllKeys вызывается, когда вызывается getMap («когда карта сначала тронута/используется»). Мне нужно каким-то образом вызвать это сразу после того, как узел уставился, чтобы убедиться, что это происходит за пределами рабочего времени. – ataurenis

+0

Я бы рекомендовал включить этот шаг при запуске узла в сценарии запуска узла. –