繁体   English   中英

用Hazelcast填充地图后,从地图中获取值

[英]Get a value from a map once it is filled with Hazelcast

我是Hazelcast的新手,我认为这是一个非常简单的问题,但却无法解决。

我有这种情况,我有2个Web服务,其中一个服务器(第一个API)中,我必须从另一个使用第二个API的服务器获取5秒后要填充的值,并且两个服务器之间只有一个referenceId识别/获取/填充值。 换句话说,当我的第一个Api用和ID调用时,它将返回推送到具有该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)一切都会很好。

我的问题是,在另一台服务器使用该特定ID填充地图之前,我该怎么做才能阻止map.get(referenceId) 是否有比使用IMap更好的选择?

如@noctarius所述,如果您一定要使用IMap,则EntryListener将是最好的方法。 这是一个EntryListener如何工作的示例。

https://github.com/hazelcast/hazelcast-code-samples/blob/master/distributed-map/entry-listener/src/main/java/ListeningMember.java

您订阅并在添加条目时得到通知。 然后,您可以触发逻辑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM