2016-11-18 10 views
0

Я пытаюсь использовать Hazelcast 3.7.x (последняя на момент написания этой статьи) Поставщик JCache и декларативная конфигурация (для преимуществ с потоками и т. Д.). Мне нужно просто установить время жизни, а не max-idle-seconds для моего варианта использования. Мне нужно сохранить элемент в кеше только в том случае, если обновления не выполняются (чтение происходит во время записи в кеше). Если я не установил максимальную-idle-секунды, по умолчанию она будет равна 0 и сохранит запись в кеше навсегда. Если бы я установил значение, меньшее, чем TTL, он мог остаться в ожидании времени, поскольку чтение может происходить. Я не мог понять, как это сделать в документации hazelcast.xml. Я могу использовать программный интерфейс, который имеет разные политики истечения срока действия, но у него были бы проблемы с инициализацией, как описано в документации Hazelcast. Кроме того, если бы они могли сделать это для поставщика JCache, я бы предположил, что есть способ сделать это в XML, а не только документально.Как игнорировать максимальные промежутки времени, но сохранить ttl в Hazelcast JCache?

Если это невозможно, и у вас есть код JCache, который работает с программной конфигурацией с вопросами по потоку, позаботьтесь, пожалуйста, отправьте. Если это просто вопрос однопоточного создания вызова, я могу сделать это сам.

Благодаря S

ответ

0

Ни макс-простаивают-секунду, ни время до живьёх секунды применимы к конфигурации JCache в конфигурации XML Hazelcast. Элемент кеша может иметь только «expiry-policy-factory», который может иметь только один подэлемент «timed-expiry-policy», и у него есть опция для изменения, касания и т. Д. Конфигурация будет выглядеть так:

<cache name="somecache"> 
     <key-type class-name="java.lang.String"/> 
     <value-type class-name="java.lang.String"/> 
     <statistics-enabled>true</statistics-enabled> 
     <management-enabled>true</management-enabled> 
     <read-through>false</read-through> 
     <write-through>false</write-through> 
     <in-memory-format>OBJECT</in-memory-format> 
     <expiry-policy-factory> 
      <timed-expiry-policy-factory expiry-policy-type="MODIFIED" duration-amount="5" time-unit="SECONDS"/> 
       </expiry-policy-factory> 
     <backup-count>1</backup-count> 
    </cache>