我应该如何使用异步通信实现 GET 端点?

How should I implement GET endpoint using asynchronous communication?

我正在使用 RabbitMQ 和 Spring 构建后端。我的 POST、UPDATE 和 DELETE 端点使用我的消息代理 (rabbitMQ) 工作正常。 但是,我不知道如何使用消息代理实现 GET 端点。有什么方法可以使用异步通信为前端检索数据库信息吗?

编辑:我找到了解决方案。如果你想在微服务 Y 中使用它,你应该从微服务 X 克隆数据。此外,如果在 X 更改它,你必须保持更新数据每次发送到 Y。

微软有一些关于微服务的好东西,对我帮助很大:https://docs.microsoft.com/pt-br/dotnet/architecture/microservices/architect-microservice-container-applications/communication-in-microservice-architecture

这里的问题是您使用的请求-响应协议 (http) 意味着与异步后端技术的同步通信。

问题如下:对于 http,您正在使用服务器线程池的一个线程来执行请求和 return 响应,但是因为您正在使用消息代理,所以处理请求的线程是与接收响应的线程不同。

有两种可能的解决方案,如果您想继续使用异步通信来处理查询 (GET),您必须使用一些不使用 SSE 或 WebSocket 等请求-响应模型的协议。 Spring 可以原生处理 SSe return 在您的控制器中使用 Flux 或 Mono。

其他选项是使其同步并查询调用数据库以获得阻塞线程的结果,直到您获得数据