Запрос Coherence EntryProcessor

Я пытаюсь реализовать бизнес-функциональность, которая использует временные кеши Coherence.

Одной из функций, от которых я планировал зависеть, является автоматическое вытеснение записей из кеша при предоставлении (настраиваемого) времени жизни во время помещения элемента в кеш. Интерфейс NamedCache предоставляет API для достижения этой цели (http://download.oracle.com/otn_hosted_doc/coherence/330/com/tangosol/net/NamedCache.html#put(java.lang.Object, java.lang.Object, long )).

Однако я также планирую использовать Entry-Processors для обеспечения эффективного параллелизма в кластере. Сейчас я застрял в точке, где в рамках процессора я должен работать с InvocableMap.Entry для получения/установки значений с помощью ключа в кеше. К сожалению, нет метода setValue, который позволяет указать значение времени жизни.

Я предполагаю, что прямое взаимодействие со ссылкой NamedCache внутри метода процесса EntryProcessor не будет хорошей идеей и поставит под угрозу гарантии параллелизма, которые предоставляет EntryProcessor.

Не могли бы вы поделиться своими мыслями о том, что может быть лучшим способом вытеснения записи через определенное время (которое определяется динамически), обеспечивая при этом оптимальный параллелизм в кластере узлов?

Я не совсем зациклен на использовании функции автоматического выселения. Однако, если бы я отказался от этого, мне, возможно, пришлось бы полагаться на программное удаление записи на основе таймера, которое надежно работает в кластере. Опять же, мне не хватает идей на этот счет. В идеале я хотел бы, чтобы Coherence занималась этим.

Спасибо заранее.

С уважением, - Адитья


person Aditya Jha    schedule 25.11.2014    source источник


Ответы (1)


вы можете попробовать следующее: приведите запись в EntryProcessor к BinaryEntry и установите время истечения срока действия. Например:

public class MyEntryProcessor extends AbstractProcessor  implements PortableObject {

 @Override
 public Object process(Entry myEntry) {     

    ((BinaryEntry)myEntry).expire(100);
    return myEntry;
 }
}

http://docs.oracle.com/middleware/1212/coherence/COHJR/com/tangosol/util/BinaryEntry.html

person Arkadiy Verman    schedule 25.11.2014
comment
Спасибо! В итоге я сделал именно это. - person Aditya Jha; 26.11.2014