Хорошо, после долгих попыток, я заметил крошечную крошечную критическую деталь покупки.
Хранилище данных должно быть централизованной системой, доступной для всех участников Hazelcast. Постоянство в локальной файловой системе не поддерживается.
Это абсолютно соответствует тому, что я наблюдал [https://docs.hazelcast.org/docs/latest/manual/html-single/#loading -and-store-persistent-data]
Однако, не обескураживаясь, я обнаружил, что могу использовать слушателей событий, чтобы делать то же самое, что и мне.
@Component
public class HazelCastEntryListner
implements EntryAddedListener<String,Object>, EntryUpdatedListener<String,Object>, EntryRemovedListener<String,Object>,
EntryEvictedListener<String,Object>, EntryLoadedListener<String,Object>, MapEvictedListener, MapClearedListener {
@Autowired
@Lazy
private RequestDao requestDao;
Я создал этот класс и подключил его к конфигурации следующим образом:
MapConfig mapConfig = config.getMapConfig("requests");
mapConfig.addEntryListenerConfig(new EntryListenerConfig(entryListner, false, true));
return Hazelcast.newHazelcastInstance(config);
Это сработало безупречно, я могу реплицировать данные в обе встроенные базы данных на каждом узле.
Мой вариант использования заключался в том, чтобы охватить крайние случаи отработки отказа HA. Во время отработки отказа HA подчиненному узлу необходимо было знать рабочую память активного узла.
Я не использую Hazelcast в качестве кэша, скорее я использую в качестве механизма синхронизации данных.