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

时间:2018-11-15 19:38:59

标签: infinispan

是否可以让Infinispan(9.4+)在主键所有者上执行任务?就像我给它提供一个缓存,该缓存中的一个键以及一个Runnable / Callable一样,它是否可以仅在该键的所有者上执行该任务?

这类似于Hazelcast IExecutorService的SubmitToKeyOwner或executeOnKeyOwner。

谢谢。

1 个答案:

答案 0 :(得分:1)

有几种方法。

如果密钥存在,最简单的方法就是使用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部分