0

作为网络服务的一部分,比如 A,我需要调用另一个网络服务,比如 B。

给予 A 的调用者的响应不应依赖于 B,即它应该将响应返回给调用者,而不管 B 的结果如何,考虑到 B 可能需要一些时间。

调用 A 和 B 的系统都是不同的。我如何实现这一目标?

注意:使用 RESTful 网络服务/Java

4

3 回答 3

3

客户端应该异步调用Web Service A操作。

Web 服务 A也应该异步调用Web 服务 B操作。

这样,无论Web Service B的结果如何,客户端都将始终收到响应。

大多数 REST 框架已经支持异步调用:

于 2013-03-27T14:58:10.913 回答
0

根据给定的要求,

在您的情况下,从客户端到服务 A 的调用可以是同步的 Restful 调用。从服务 A 到服务 B 的调用是异步的。

因此,像往常一样在客户端到服务 A 之间使用宁静的连接。

在调用服务 A -> 服务 B 的情况下,您需要使用 JMS 概念,例如请求和响应队列。请参考http://docs.oracle.com/cd/E14571_01/web.1111/e15184/asynch.htm 这些通常实现为 2 单向请求。

于 2013-04-25T12:02:00.770 回答
0

如果您不介意第 3 方库使用 jetty-client:http ://www.supermind.org/blog/1023/non-blocking-nio-http-requests-in-java-with-jettys-httpclient

这是maven包描述: http: //mvnrepository.com/artifact/org.eclipse.jetty/jetty-client

于 2013-03-27T13:22:23.397 回答