Java 一致性入口处理器查询

Java 一致性入口处理器查询,java,caching,concurrency,oracle-coherence,Java,Caching,Concurrency,Oracle Coherence,我正在尝试实现一个使用一致性瞬态缓存的业务功能 我计划依赖的一个特性是缓存项的自动逐出,在将项放入缓存时提供(可配置的)生存时间。接口NamedCache提供了一个API来实现这一点(,java.lang.Object,long)) 然而,我还计划使用入口处理器来确保集群中的有效并发。我现在被困在一个点上,在处理器的范围内,我应该使用InvocableMap.Entry来使用缓存中的键获取/设置值。不幸的是,没有setValue方法可以让我指定生存时间值 在这里,我假设在EntryProcess

我正在尝试实现一个使用一致性瞬态缓存的业务功能

我计划依赖的一个特性是缓存项的自动逐出,在将项放入缓存时提供(可配置的)生存时间。接口NamedCache提供了一个API来实现这一点(,java.lang.Object,long))

然而,我还计划使用入口处理器来确保集群中的有效并发。我现在被困在一个点上,在处理器的范围内,我应该使用InvocableMap.Entry来使用缓存中的键获取/设置值。不幸的是,没有setValue方法可以让我指定生存时间值

在这里,我假设在EntryProcessor的进程方法中直接与NamedCache引用接口不是一个好主意,并且会损害EntryProcessor提供的并发性保证

您能分享一下您的想法吗?在确保跨节点集群的最佳并发性的同时,什么是在一定时间(由动态决定)后将条目逐出的最佳方法

我对使用自动逐出功能没有完全的兴趣。然而,如果我要放弃这一点,我可能不得不依赖于基于计时器的程序化条目删除,它在集群中可靠地工作。再一次,我在这一点上缺乏想法。理想情况下,我希望一致性来处理这个问题

非常感谢

致以最良好的祝愿, -Aditya

您可以尝试以下方法: 将EntryProcessor中的条目强制转换为BinaryEntry并设置过期时间。 例如:

public class MyEntryProcessor extends AbstractProcessor  implements PortableObject {

 @Override
 public Object process(Entry myEntry) {     

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

谢谢!我最终就是这么做的。