прослушиватели записей для кеша запросов в конфигурации клиента Hazelcast

Пример полной конфигурации клиента Hazelcast на GitHub определяет прослушиватель записей для кэша запросов, см. https://github.com/hazelcast/hazelcast/blob/master/hazelcast-client/src/main/resources/hazelcast-client-full.xml

Я попробовал это, но регистрация прослушивателя записи через конфигурацию xml, похоже, игнорируется. Программный подход с использованием метода addEntryListener() класса QueryCache работает нормально.

В документации Hazelcast я не могу найти дополнительную информацию о настройке прослушивателя входа на стороне клиента.


person dieter    schedule 20.06.2018    source источник


Ответы (1)


Вы можете предоставить декларативную конфигурацию для кеша запросов. Пример конфигурации будет таким, как показано ниже... на стороне клиента или на стороне сервера

<map name="myMap">
   <query-caches>
      <query-cache name="myContQueryCache">
         <include-value>true</include-value>
         <predicate type="class-name">com.hazelcast.examples.ExamplePredicate</predicate>
         **<entry-listeners>
             <entry-listener include-value="false" local="false">
            com.yourpackage.MyEntryListener
          </entry-listener>
         </entry-listeners>**
         <in-memory-format>BINARY</in-memory-format>
         <populate>true</populate>
                  <coalesce>false</coalesce>
                  <batch-size>2</batch-size>
                  <delay-seconds>3</delay-seconds>
                  <buffer-size>32</buffer-size>
                  <eviction size="1000" max-size-policy="ENTRY_COUNT" eviction-policy="LFU"/>
                  <indexes>
                         <index ordered="true">...</index>
                  </indexes>
           </query-cache>
    </query-caches>
</map>

Entry-Listeners: Добавляет прослушиватели (классы прослушивателей) для ваших записей кэша запросов.

Так же стоит отметить...

События IMap отражаются в кэше непрерывных запросов в том же порядке, в котором они были созданы в записях карты. Поскольку события создаются для записей, хранящихся в разделах, порядок событий поддерживается на основе порядка внутри раздела. Вы можете добавить прослушиватели для захвата потерянных событий с помощью EventLostListener и восстановить потерянные события с помощью метода QueryCache.tryRecover(). Восстановление потерянных событий во многом зависит от размера буфера на членах Hazelcast. Размер буфера по умолчанию — 16 на раздел; то есть в буфере может храниться 16 событий на раздел. Если генерация событий высока, установка большего размера буфера повысит вероятность восстановления потерянных событий. Вы можете установить размер буфера с помощью QueryCacheConfig.setBufferSize(). Вы можете использовать следующий пример кода для случая восстановления.

person Riaz    schedule 20.06.2018
comment
Спасибо за подробное описание, Риаз. - person dieter; 20.06.2018
comment
К сожалению, мне не удается заставить работать декларативный подход. - person dieter; 20.06.2018