【发布时间】:2019-02-04 18:38:06
【问题描述】:
我有一个与架构相关的问题。这是一个与语言无关的问题,但由于我来自 Java 背景,如果有人以 Java 方式指导我,对我来说会更容易。
基本上,我正在编写的中间件与基于 SOAP 的第三方服务进行通信。调用是异步的——以某种方式,当调用服务时,它会返回响应 01——处理;表示第三方已成功收到请求。在原始的 SOAP 请求中,每次都必须提交一个回调 URL,由第三方实际发送结果。因此,调用特定服务实际上并不会立即返回结果。结果在中间件的一个单独的 HTTP 端点中接收。
现在在我们的前端,我们不想让用户体验复杂化。我们希望我们的用户调用一个中间件函数(通过菜单项/按钮),并立即得到结果;把脏活留给中间件。
请注意,从前端调用的中间件函数(比如说 X())和第三方推送结果的中间件端点 URL(我们称之为 Y)是完全分开的。 X() 必须等待然后获取 Y 中抓取的结果,然后将结果返回给前端。
如何构建稳健的解决方案来实现上述行为? 图片完美地描绘了我的情况。任何建议都将受到高度赞赏。
【问题讨论】:
-
结果接收中间件如何将结果发送到原请求目标中间件? x() 和 y() 在同一个服务/应用程序中是不同的操作吗?
-
未来和承诺。
-
@ErnestKiwele:X() 和 Y() 都是同一个中间件的一部分。 X() 接收来自 FE 的请求,并将异步调用发送给第三方。然后第三方处理请求并将结果(可以是 post 调用)返回给 Y()(这是一个端点 URL - 也在中间件中)
标签: java multithreading asynchronous architecture integration-patterns