首页 > 解决方案 > Web 应用程序与基于事件的服务集成

问题描述

在将 Web 应用程序(例如 React 单页应用程序)与基于纯事件的后端(例如微服务、ActiveMQ)连接时,我正在寻找最佳实践。

当我从 React 进行 GET 调用(即请求响应)时,考虑到所有后端服务都是基于事件的,我如何获得响应?

我的想法是:

  1. 执行 GET 命令
  2. 在后端(请求-响应)中有一个 REST 控制器服务,它会触发一个事件并返回一个响应,表明一切正常
  3. 在客户端,信号被捕获,但没有任何反应,继续加载
  4. 事件在后端同时处理,完成后触发另一个“响应”事件,(使用粘性或类似方法)相同的 REST 控制器监听
  5. 控制器使用 websockets(或类似的)将实际响应发送到浏览器
  6. 浏览器获取响应,显示结果

我知道有解决方法,但我正在寻找基于事件的最佳解决方案。

标签: webeventsqueuemicroservices

解决方案


执行 GET 命令

这是正确的

在后端(请求-响应)中有一个 REST 控制器服务,它会触发一个事件并返回一个响应,表明一切正常

是的,您将返回一个参考 ID,客户可以使用该 ID 来跟踪进度。

在客户端,信号被捕获,但没有任何反应,继续加载

要看。如果您希望客户等待,那么您继续显示加载。如果这是一个漫长的过程,那么您可能不会阻止用户并在稍后发送通知它已完成。

事件在后端同时处理,完成后触发另一个“响应”事件,(使用粘性或类似方法)相同的 REST 控制器监听

在解耦架构中,每件事都是异步的。意味着火灾和忘记。当您将参考 ID 返回给客户端时,控制器完成,您无法阻止任何内容。客户端将使用该 ID 来检查进度(缓存/数据库等)。如果您要使用 websocket 路径,那么可能的控制器可以根据状态变化进行通知。

您已经了解了,因此这实际上取决于您尝试构建的工作流程。


推荐阅读