Axon框架是先将事件存入Event Store还是先发布到Event Bus?
Axon框架事件存储与发布的执行顺序
核心结论非常明确:Axon会先将事件写入Event Store完成持久化,全部写入成功后才会把事件发布到Event Bus,这个顺序是框架硬编码保证的,没有配置项可以调换,核心是为了避免事件发布成功但持久化失败导致的系统状态不一致、事件溯源链路断层问题。
具体执行流程如下:
- 聚合根完成命令处理逻辑,生成待提交的领域事件集合
- 事件提交组件开启本地事务,将所有待提交事件批量序列化写入
Event Store - 等待
Event Store返回写入成功响应、提交事务完成后,才会触发事件发布动作 - 事件被推送到
Event Bus后,才会分发给所有订阅的事件处理器,包括查询投影、Saga编排器、外部系统消息转发适配器等 - 如果事件写入
Event Store阶段出现任何异常(存储节点故障、序列化失败、并发版本冲突等),整个提交流程直接回滚,不会有任何事件被发布到Event Bus
常见误区说明:哪怕你使用的是对接Kafka、RabbitMQ这类外部消息中间件的分布式事件总线实现,这个顺序依然严格生效。Axon不会在事件落库前就把消息发给外部中间件,所有跨节点的事件转发动作都只会在
Event Store写入确认后执行。
你绘制时序图时可以直接按照「聚合生成事件→Event Store存事件→存库成功→Event Bus发布事件→下游处理器消费事件」的顺序画,不会有顺序问题。
内容的提问来源于stack exchange,提问作者miy33t
相关产品推荐
相关产品推荐

