[英]Get a value from a map once it is filled with Hazelcast
我是Hazelcast的新手,我认为这是一个非常简单的问题,但却无法解决。
我有这种情况,我有2个Web服务,其中一个服务器(第一个API)中,我必须从另一个使用第二个API的服务器获取5秒后要填充的值,并且两个服务器之间只有一个referenceId识别/获取/填充值。 换句话说,当我的第一个Api用和ID调用时,它将返回推送到具有该ID的第二个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)
一切都会很好。
我的问题是,在另一台服务器使用该特定ID填充地图之前,我该怎么做才能阻止map.get(referenceId)
? 是否有比使用IMap更好的选择?
如@noctarius所述,如果您一定要使用IMap,则EntryListener将是最好的方法。 这是一个EntryListener如何工作的示例。
您订阅并在添加条目时得到通知。 然后,您可以触发逻辑。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.