Hazelcast 3.4.4。
我遇到了一个情况:map.getAsync
无论如何返回 null。即使超时设置为 10000000
, TimeUnit.SECONDS
它不会等待。
但是如果我输入 Thread.sleep(10000)
就在 getAsync 之前,它会从 map 返回正确的值。
我想知道出了什么问题以及如何检查/修复/理解它?
更新:如果我删除 import ExecutionContext.Implicit.global
从我的代码和所有依赖项(如 Scala.concurent.Future
),然后 getAsync 再次开始工作。但我仍然不满足......
最佳答案
对我来说,感觉就像您希望它等到将值放入 map 中为止,不是吗?
这并不意味着它将等待直到某个值可用,它只是为您提供了在集群完全耗尽且无法足够快地响应您的请求的情况下超时的选项。
我实际上认为没有好的方法来实现您正在寻找的内容,但您可以使用本地 EntryListeners,等待按键并通过主题转发事件(如果有意义的话)。您可能还需要 Promise 类型的实现。
关于java - getAsync ("key").get(timeout, sec) 不等待,返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31974762/