如我在为什么CQRS存储库发布事件而非事件存储?中所学,CQRS存储库的任务是发布事件。到目前为止还不错。
当然,存储事件和发布事件应该在一个单一的事务内完成。从技术上讲,这意味着向存储库写入一个或多个记录,并向消息总线发布一个或多个事件。因此,简单的数据库事务是不够的,需要进行分布式事务。
现在,不幸的是,许多NoSQL数据库(如MongoDB)不支持ACID兼容的事务,更不用说参与分布式事务了。此外,还有一些消息队列也不支持分布式事务。
那么问题来了:我该怎么办?
有没有推荐的模式可以使用?