正如我已经了解到为什么CQRS存储库发布事件而不是事件存储?这是CQRS存储库发布事件的任务.到现在为止还挺好.
当然,存储事件并发布它们应该在一个单一的事务中.从技术上讲,这意味着将一个(或多个)记录写入商店,并将一个(或多个)事件发布到消息总线.因此,简单的数据库事务是不够的,它应该是分布式的.
现在,不幸的是,许多NoSQL数据库(例如MongoDB)不支持符合ACID的事务,甚至没有谈论在分布式事务中发生的可能性.此外,还有一些消息队列也不支持分布式事务.
所以问题是:我该如何处理?
是否有推荐使用的模式?