我正在尝试基于 AWS 无服务器架构实现 CQRS + 事件溯源后端。问题在于 readmodel 更新。
当事件保存到事件存储时,它会发布到 SNS。SNS 然后调用UpdateReadModel
lambda。当多个顺序事件发布到 SNS 时,会调用多个 lambda。
第一个问题是它们都执行相同的 ReadModel 更新,实际上只有一个 lambda 必须为所有事件调用。
第二个问题是,最终的 ReadModel 状态可能会在多次执行 lambdas 后被破坏。
要求每个 ReadModel 只调用一个 lambda。
可能的解决方案:
使用 MessageBroker(RabbitMQ 或 Kafka)+ EC2 实例调用
UpdateReadModelLambda
.在 SNS + EC2 实例之后添加 SQS,并编写调用 lambdas 并从 SQS 获取事件的代码。
但我不想使用实例,因为它不适合无服务器方法,开发人员应该手动管理和扩展容器或 MessageBus。
也许有人已经解决了这个问题或有其他云服务 + CQRS + EventSourcing 的解决方案?