Hazelcast обеспечивает предварительную загрузку Near Cache на члене

У меня есть вариант использования, когда мне нужно убедиться, что данные загружены в ближайший кеш, прежде чем работать с ними. Я использую Hazelcast в качестве поставщика Cache Manager. Я храню данные в ближайшем кеше вOBJECTв формате памяти и кэшировать локальные записи. При запуске приложения я делаю теплый кеш, вызывая кешированный метод службы:

      @Override
      public void onApplicationEvent(final ApplicationReadyEvent applicationReadyEvent) {

       applicationReadyEvent.getApplicationContext().getBean(MyService.class).myCachedMethod(); //1 warm cahce

       applicationReadyEvent.getApplicationContext().getBean(MyService.class).myCachedMethod(); //2 warm near cache here

       MyData myData = applicationReadyEvent.getApplicationContext().getBean(MyService.class).myCachedMethod(); // 3 warm near cache here 
      //4
      //work with data from near cache here
        myDtata.doStufff();
      }

После этого я вызываю один и тот же метод несколько раз, чтобы загрузить данные в ближайший кеш. Проблема в том, что иногда кэш не загружается, когда я пытаюсь работать с данными метода. Похоже, что Near Cache загружается асинхронно, и я продолжаю получать данные не из ближайшего кеша на шаге 4. Итак, мой вопрос - есть ли способ сделать возможной предварительную загрузку NearCache или гарантировать, что в определенной точке NearCache заполнен? Даже если это означает подождать некоторое время, пока он заполнится, перед использованием. ДобавлениеThread.sleep()помогает мне, но это никуда не годится. Версия Hazelcast3.11.4

Любая помощь приветствуется.

1 ответ

Вы можете предварительно загрузить Near Cache, используя <preloader>элемент конфигурации. См. Следующий пример конфигурации, аналогичный конфигурации из Справочного руководства:

<near-cache name="myDataStructure">
  <in-memory-format>OBJECT</in-memory-format>
  <preloader enabled="true"
             directory="nearcache-example"
             store-initial-delay-seconds="600"
             store-interval-seconds="600"/>
</near-cache>
Другие вопросы по тегам