Spring 请求响应模型/同步/异步/事件驱动

Spring 请求响应模型/同步/异步/事件驱动,spring,rest,architecture,Spring,Rest,Architecture,我有一个要求,我将不得不作为中间件系统,上游系统打电话给他,我将打电话给第三方系统与一些额外的插件。一旦我向第三方系统提交请求,他们就会给我一个id作为响应。我将不得不使用此id进行另一次调用以获取我的请求状态,一旦我的请求状态更改为“完成”,我将不得不调用另一个服务以获取我的请求的详细信息。一旦我仅获得响应,我将不得不向其添加一些额外信息,并将详细信息发送回上游系统 对于这种情况,哪种模型更好 请求/响应(同步) 异步调用 事件驱动机制 我的系统和第三方系统之间的流程是固定的,不能更改部分。

我有一个要求,我将不得不作为中间件系统,上游系统打电话给他,我将打电话给第三方系统与一些额外的插件。一旦我向第三方系统提交请求,他们就会给我一个id作为响应。我将不得不使用此id进行另一次调用以获取我的请求状态,一旦我的请求状态更改为“完成”,我将不得不调用另一个服务以获取我的请求的详细信息。一旦我仅获得响应,我将不得不向其添加一些额外信息,并将详细信息发送回上游系统

对于这种情况,哪种模型更好 请求/响应(同步) 异步调用 事件驱动机制

我的系统和第三方系统之间的流程是固定的,不能更改部分。 上游系统将通过ESB调用我的服务。
我计划使用RestFul,请告诉我您对此的看法。

您只需使用与使用第三方系统相同的中间件系统方案即可:

一旦我向第三方系统提交请求,他们会给我一个id作为 回应。我必须用这个id再打一个电话才能拿到 我的请求状态,一旦我的请求状态更改为 说完

  • 因此,中间件应该在每个上游请求上返回中间件RequestId
  • 上游可以检查此中间件RequestId的请求状态
  • 当请求状态更改为
    done
    时,上游可以得到响应
我创建此序列图是为了演示
上游
中间件
第三方
系统之间的简单交互:


我应该使用哪种型号的rquest/response或async Calls您应该同时使用这两种:)
上游将向您的
中间件发送请求
,但
中间件
无法同步处理此请求(由于
第三方
系统行为),因此,它会将请求id返回到
上游
,并且
上游
稍后可以询问您的
中间件
关于请求状态以及完成后得到正确响应的情况。它是异步请求/响应模型