假设有以下基于CQRS架构的简单UC:
我们有一个后端管理业务对象,例如电影。
该后端由2个微服务组成:CommandManager(创建/更新/删除电影)和QueryManager(查询电影)。
我们有一个前端,提供一个网页用于创建新电影,此操作自动导航到另一个描述电影的网页。
实现方式如下:
一个网页使用表单收集电影信息并将其发送到前端。
前端向CommandManager发出POST请求。
CommandManager将新电影写入数据存储并返回电影键。
前端使用该键向QueryManager发出GET请求。
QueryManager使用键在数据存储中查找电影并返回它。
前端提供带有电影信息的页面。
现在,我想以更多的事件驱动方式转换这个UC。以下是新的流程:
网页使用表单收集电影信息并将其发送到前端。
前端在总线上写入消息,其中包含新电影信息。
CommandManager监听总线并在数据存储中创建新电影。最终,它会在总线上发布一条新消息,指定已创建了新电影。
此时,前端不再等待响应,因为此类流程是异步的。我们如何完成此流程以将用户转发到电影信息网页?我们应该在查询QueryManager之前等待创建过程完成。
更一般地说,在基于总线/事件的异步架构中,如何执行用于提供网页信息的查询?
我们有一个后端管理业务对象,例如电影。
该后端由2个微服务组成:CommandManager(创建/更新/删除电影)和QueryManager(查询电影)。
我们有一个前端,提供一个网页用于创建新电影,此操作自动导航到另一个描述电影的网页。
实现方式如下:
一个网页使用表单收集电影信息并将其发送到前端。
前端向CommandManager发出POST请求。
CommandManager将新电影写入数据存储并返回电影键。
前端使用该键向QueryManager发出GET请求。
QueryManager使用键在数据存储中查找电影并返回它。
前端提供带有电影信息的页面。
现在,我想以更多的事件驱动方式转换这个UC。以下是新的流程:
网页使用表单收集电影信息并将其发送到前端。
前端在总线上写入消息,其中包含新电影信息。
CommandManager监听总线并在数据存储中创建新电影。最终,它会在总线上发布一条新消息,指定已创建了新电影。
此时,前端不再等待响应,因为此类流程是异步的。我们如何完成此流程以将用户转发到电影信息网页?我们应该在查询QueryManager之前等待创建过程完成。
更一般地说,在基于总线/事件的异步架构中,如何执行用于提供网页信息的查询?