Nic*_*ico 6 event-driven cqrs microservices
假设基于CQRS架构的以下简单UC:
我们有一个管理商业对象的后端,让电影说.
一个简单的方法是:
好的,现在我想以更多的事件驱动方式转换这个UC.这是新的流程:
此时,由于这种流是异步的,因此前端不再等待响应.我们如何完成此流程以将用户转发到电影信息网页?在查询QueryManager之前,我们应该等待创建过程完成.
在一个更通用的术语中,在基于总线/事件的异步架构中,如何执行用于在网页中提供信息的Query?
除了@ VoiceOfUnreason的回答,
如果两个微服务是RESTFul,则CommandManager
可以返回一个202 Accepted
带有指向将来创建的资源的链接.然后,客户端可以轮询该资源,直到服务器以a响应200 OK
.
另一种解决方案是CommandManager
返回a 202 Accepted
,链接指向command/status
端点.客户端将轮询该端点,直到状态为command-processed
(包括实际资源的URL)或command-failed
(包括失败的描述性消息).
可以通过使用服务器发送事件发送所有已处理命令的状态来扩充这些解决方案.通过这种方式,客户端无需轮询即可获得通知.
如果客户端不知道体系结构是异步的,则解决方案是使用API网关阻止客户端的请求,直到上游微服务处理命令,然后使用完整资源的数据进行响应.
归档时间: |
|
查看次数: |
1133 次 |
最近记录: |