Hazelcast 3.4.4。
无论如何,我都遇到了map.getAsync
返回null的情况。即使超时设置为10000000
,它也不会等待。
但是,如果我将TimeUnit.SECONDS
放在getAsync之前,那么它将从映射返回正确的值。
我想知道哪里出了问题,如何检查/修复/理解它呢?
更新:如果我从代码和所有依赖项(如Thread.sleep(10000)
)中删除了import ExecutionContext.Implicit.global
,则getAsync将再次开始工作。但是我还是不满意...
最佳答案
对我来说,感觉就像您希望它等待到将值放入地图中一样,不是吗?
这并不意味着它会等到一个值可用时才出现,它只是为您提供了一个选项,可以在群集完全耗尽并且无法足够快地响应您的请求的情况下设置超时。
实际上,我认为没有什么好方法可以实现所需的功能,但是您可以使用本地EntryListeners,等待键并通过主题转发事件(如果可以的话)。您可能还需要Promise类型的实现。