AxonFramework配置独立Mongo事件存储后业务库仍生成Axon相关表问题
问题根因
- 你配置的
MongoEventStorageEngine仅负责事件数据的存储,属于Axon的事件存储模块,不涵盖Saga、跟踪令牌两类组件的持久化逻辑。 association_value_entry、saga_entry是Saga组件的持久化表,token_entry是事件处理器跟踪令牌的持久化表,这两类组件的默认持久化实现基于JPA/JDBC,会自动绑定项目中配置的默认业务数据源(即你的PostgresDB),因此会在业务库中自动建表。
解决方案
方案一:将Saga、令牌存储也迁移到独立MongoDB
引入Axon Mongo扩展的完整能力,替换默认的JPA存储实现:
- 自定义实现
MongoTokenStore,绑定你为事件存储准备的MongoDB数据源,替换默认的JPA令牌存储实现 - 自定义实现
MongoSagaStore,绑定同一份MongoDB数据源,替换默认的JPA Saga存储实现
配置完成后所有Axon运行所需的持久化数据都会落到独立Mongo库中,不会再操作业务PostgresDB。
方案二:为JPA存储的Axon组件配置独立数据源
如果不希望用Mongo存储Saga和令牌,也可以单独为Axon的JPA存储模块配置独立的JDBC数据源,手动指定该模块专属的EntityManager与TransactionManager,避免和业务数据源耦合,相关表就会生成到你指定的独立数据源中,而不是业务库。
内容的提问来源于stack exchange,提问作者Suresh Achary
相关产品推荐
相关产品推荐

