【问题标题】:RESTTemplate waiting for API responseRESTTemplate 等待 API 响应
【发布时间】:2012-09-08 08:14:07
【问题描述】:

在我的 Spring 应用程序中,我使用 RESTTemplate 从外部 API 获取一些信息。此 API 要求当您发出请求时,您必须等待它的响应,直到您发出另一个请求。这就是为什么我想知道如何做到这一点。当然不能使用计时器或类似的东西,因为这个 API 的响应时间每次都不一样。

很遗憾,此应用需要 RESTTemplate,我无法更改。

【问题讨论】:

    标签: java web-services spring api rest


    【解决方案1】:

    通常您应该在发出请求时等待响应,但您可以打开一个正在侦听传入数据的服务器套接字,当您收到响应时,检查它是什么类型的响应,然后接受或拒绝它。因此,您使用客户端套接字发出请求并使用服务器套接字接收响应。

    http://docs.oracle.com/javase/tutorial/networking/sockets/clientServer.html

    http://docs.oracle.com/javase/6/docs/api/java/net/ServerSocket.html

    【讨论】:

      【解决方案2】:

      您可以在单例 bean 中使用标志来实现这一点。在调用服务之前,请检查它是否为false。如果false 标记true 并致电服务。在退出之前制作标志false

      因此,当flag == true 服务正在进行时,您可以提出新请求。

      【讨论】:

      • 我真的不明白如何仅使用布尔值连接到外部 api ...
      • @JonathanCruz 因为他使用的是 RESTTemplate,所以对外部 api 的调用类似于String result = restTemplate.getForObject("... 他想确保在进行另一个可由用户触发的调用之前没有待处理的请求。因此,只需检查某个静态类中设置的标志,在调用之前设置标志并在调用后清除它。因此,在调用 api 之前,如果他发现标志为真,他可以要求用户 ti 稍后再试。
      猜你喜欢
      • 2018-05-14
      • 1970-01-01
      • 2017-07-21
      • 2018-08-04
      • 2022-07-01
      • 2020-07-26
      • 1970-01-01
      • 1970-01-01
      • 2017-01-28
      相关资源
      最近更新 更多