- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 MapLoader 将数据从数据存储初始加载到 Hazelcast (InitialLoadMode = EAGER)。我需要从一个物化 View 中加载这些数据,该 View 是为了在加载过程开始时进行加载而创建的,并且在加载完成后,我需要删除这个物化 View 。
有什么方法可以告诉 Hazelcast 在开始使用 MapLoader 加载数据之前触发创建此 View 的代码吗?
初始加载完成后,Hazelcast 有什么办法可以通知您吗?我查看了听众,但只看到了有关单一值的内容。
我想到的唯一方法是在 MapLoader.loadAllKeys() 中创建物化 View (它保证它只会执行一次,并且它将在任何人可以从 map 中获取某些内容之前执行,因此在任何人之前执行)可能会无意中调用加载过程),然后在其他地方调用 getMap("") (我使用 EAGER),当它完成时,删除该实体。
有更好的方法吗?
最佳答案
如果您需要完全控制初始化过程,那么您可能需要在没有 MapLoader 的情况下手动填充 map :
public class MapWrapper {
private Lock lock = hazelcastInstance.getLock("map-lock");
private IAtomicLong mapIsLoaded = ...;
ICountDownLatch latch = hazelcastInstance.getCountDownLatch("map-loaded");
public MapWrapper() {
latch.trySetCount(1);
}
public void initialize() {
lock.lock();
// Loading:
try {
// Skip loading if map already loaded (ensure only once for cluster)
if(mapIsLoaded.get() == 1) {
return;
}
mapIsLoaded.set(0);
// Here code to load your map, clean database:
initializeDatabase();
loadMap();
cleanDatabase();
} finally {
latch.countdown();
mapIsLoaded.set(1);
lock.unlock();
}
}
public Map getMap() {
// Blocking until loading is completed:
latch.await();
return hazelcastInstance.getMap(...);
}
}
关于java - 查明 MapLoader 何时在 Hazelcast 中完成(急切)加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56342488/
我正在实现 hazelcast MapLoader,它适用于 loadAll 和加载方法。 但是,在文档中他们有 giver person 示例,它只是在 loadAllKeys 方法中返回 null
我正在评估 Hazelcast 作为我正在开发的应用程序的分布式数据网格解决方案。 Hazelcast 设置在分布式集群上,我的应用程序使用 Spring 以这种方式定义 Hazelcast 客户端:
我使用 MapLoader 将数据从数据存储初始加载到 Hazelcast (InitialLoadMode = EAGER)。我需要从一个物化 View 中加载这些数据,该 View 是为了在加载过
我是一名优秀的程序员,十分优秀!