Infinispan分布式缓存并在主键所有者上执行任务



是否可以让Infinispan(9.4+(在主键所有者上执行任务?比如,如果我给它一个缓存、一个缓存中的密钥和一个Runnable/Callable,它能在该密钥的所有者身上执行该任务吗?

这将类似于Hazelcast IExecutorService的submitToKeyOwner或executeOnKeyOwner。

谢谢。

有几种方法。

如果密钥存在,最简单的方法就是使用DistributedStreams

cache.entrySet().stream().filterKeys(Collections.singleton(key)).forEach((cache, k) -> <do stuff>);

如果密钥不存在,您可以使用ClusterExecutor

cacheManager.executor().singleNodeSubmission().filterTargets(Collections.singleton(address) .submit(<runnable>);

您可以通过调用找到目标地址

Address address = cache.getAdvancedCache().getDistributionManager() .getCacheTopology().getDistributionInfo(key).primary();

我还建议你看看这个部分http://infinispan.org/docs/stable/user_guide/user_guide.html#execute_code_grid

最新更新