我正在设计一个系统,该系统使用基于事件的通信(使用 Google Cloud Pub/Sub)的微服务架构。
每个服务都在侦听和发布消息,因此服务之间的一切都非常好。
最重要的是,我想提供一个 REST API,用户可以在不破坏基于事件的方法的情况下使用它。但是,如果我有一个触发事件 X 的端点,我将如何将响应发送给用户?为“ProcessXComplete”事件创建订阅者并返回 200 OK 是否有意义?
例如:
我有以下微服务:
- 服务A
- 服务乙
- 前端服务 - REST 端点
我想发送这个请求“POST /posts”——这个请求发送到前端服务。前端服务应该触发“NewPostEvent”。Service A 和 Service B 都会监听这个事件并做一些事情。
到目前为止,一切都很好,但这就是我开始变得混乱的地方。现在我想向发出请求的用户返回操作完成的有效响应。我怎么知道所有服务都完成了它们的任务,以及如何创建处理程序来返回这个响应?
这样做是否有意义,或者是否有更好的设计来实现服务之间基于事件的通信并提供 REST API