Java 的未来,是承诺还是?

问题描述 投票:0回答:2

我有以下场景。

  1. 用户向我的服务请求一些信息。 但是,我没有这些信息,必须从第三方网站请求。
  2. 我向第三方网站发出请求(POST)。 第三方网站(我不控制)不是直接提供信息,而是期望在我的初始帖子中提供回调 URL。 因此,我对信息的请求立即返回,但没有信息。
  3. 信息准备好后,第三方网站通过回调 URL(来自我的初始 POST)调用我的服务并提供信息(通过 POST)。
  4. 然后我想将信息返回给用户。

问题是我想阻止原始用户的信息请求,直到我通过回调获取信息。 我不知道应该如何用java编写它。 我正在使用 spring boot(尽管我不确定这有多大相关性)。 我还在考虑将其编码为普通的 spring boot mvc 应用程序或反应式 spring boot 应用程序(我想做后者,但我仍在学习反应式 spring boot)。 无论如何,我对这两个框架的解决方案都很感兴趣。

基本问题是如何阻止初始用户信息请求,直到第三方站点将信息发送到回调 URL? 我研究过未来和承诺,要么我不太理解它们,要么它们不是我正在寻找的机器人。

有什么建议吗? 预先感谢。

java spring-boot concurrency reactive-programming
2个回答
1
投票

如果你想在等待第三方回复时阻塞一个线程,这是无用的资源浪费。您需要准备一个包含有关用户请求的所有信息的对象,并为其分配一个唯一的 id,然后使用包含该 id 的回调 url 向第三方发送请求,如

http://myservice.org/callback?id=123
。启动服务器来接受回调。该服务器从 url 中提取 id,从 hashmap 中找到具有该 id 的用户请求对象,然后发送回复。


0
投票

我为 java 和 kotlin 编写了一个 Promise 库。它更易于使用且轻巧,请在 https://pro4j.com/ 处查看。

© www.soinside.com 2019 - 2024. All rights reserved.