是否可以让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