我是 Hazelcast 的新手,在我看来,我正在努力解决一个非常简单的问题,但无法解决它。
我有这种情况,我有 2 个 Web 服务,在一个服务器(第一个 API)中,我必须使用第二个 API 从另一台服务器获取将在 5 秒后填充的值,并且我在两台服务器之间只有一个 referenceId识别/获取/填充值。换句话说,当使用 ID 调用我的第一个 Api 时,它将返回推送到具有该 ID 的第二个 Api 的内容。
此图更好地显示了我想通过连接第一个和第二个 API 来解决的问题:
因此,我使用了 IMap 并像这样执行“获取”和“放置”:
//- First API -//
Integer referenceId = XXXX; // coming in the step 2
IMap<Integer, String> map = hazelcastInstance.getMap("ResponseMap");
Thread.sleep(5000); // Sleep here does the trick but it's the worst performance
String strResponse = map.get(referenceId);
另一方面,另一台服务器将在最多 5 秒后放入数据,如下所示:
//- Second API -//
String refId = captureRefId(YYYY)
IMap<Integer, String> map = hazelcastInstance.getMap("ResponseMap");
map.put(refId, YYYY);
这样做的问题是 map.get 总是返回 null ,因为此时该值不存在,但是如果我添加sleep(5)
一切正常。
map.get(referenceId)
我的问题是,在其他服务器使用该特定 ID 填充地图之前,我该怎么做才能被阻止?还有比使用 IMap 更好的选择吗?