gpt4 book ai didi

java - Coherence EntryProcessor 查询

转载 作者:行者123 更新时间:2023-11-30 03:39:22 24 4
gpt4 key购买 nike

我正在尝试实现使用 Coherence transient 缓存的业务功能。

我计划依赖的功能之一是在将项目放入缓存时提供(可配置的)生存时间时自动逐出缓存条目。 NamedCache 接口(interface)提供了一个 API 来实现此目的( http://download.oracle.com/otn_hosted_doc/coherence/330/com/tangosol/net/NamedCache.html#put(java.lang.Object , java.lang.Object, long))。

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

我在这里假设直接与 EntryProcessor 的 process 方法内的 NamedCache 引用进行交互并不是一个好主意,并且会损害 EntryProcessor 提供的并发保证。

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

我并没有完全沉迷于使用自动驱逐功能。但是,如果我要放弃这一点,我可能不得不依赖基于计时器的程序化删除条目,该条目在集群中可靠地工作。再说一次,我对此缺乏想法。理想情况下,我希望 Coherence 能够解决这个问题。

提前非常感谢。

最诚挚的问候,- 阿迪亚

最佳答案

您可以尝试以下操作:将 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

关于java - Coherence EntryProcessor 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27124664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com