You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否使用Mongock向多个数据库写入数据?

可以通过Mongock实现向多个不同数据库写入数据

你的当前代码无法直接区分数据源,因为默认情况下Mongock只会注入对应主数据源的MongockTemplate。要实现多数据源操作,需按以下步骤配置:

1. 配置多数据源及对应MongockTemplate

在配置类中创建分属不同数据库的MongoTemplate,再基于它们生成命名的MongockTemplate:

@Configuration
public class MultiMongoConfig {

    // 对应database1的MongoTemplate
    @Bean(name = "mongoTemplateDb1")
    public MongoTemplate mongoTemplateDb1(MongoClient mongoClient) {
        return new MongoTemplate(mongoClient, "database1");
    }

    // 基于database1的MongoTemplate创建MongockTemplate
    @Bean(name = "mongockTemplateDb1")
    public MongockTemplate mongockTemplateDb1(@Qualifier("mongoTemplateDb1") MongoTemplate mongoTemplate) {
        return new MongockTemplate(mongoTemplate);
    }

    // 对应database2的MongoTemplate
    @Bean(name = "mongoTemplateDb2")
    public MongoTemplate mongoTemplateDb2(MongoClient mongoClient) {
        return new MongoTemplate(mongoClient, "database2");
    }

    // 基于database2的MongoTemplate创建MongockTemplate
    @Bean(name = "mongockTemplateDb2")
    public MongockTemplate mongockTemplateDb2(@Qualifier("mongoTemplateDb2") MongoTemplate mongoTemplate) {
        return new MongockTemplate(mongoTemplate);
    }
}

2. 在ChangeSet中指定注入对应MongockTemplate

修改你的变更集方法,通过@Qualifier注解明确指定要注入的命名模板:

@ChangeSet(order = "005", id = "changeWithMongockTemplate1", author = "mongock")
public void changeWithMongockTemplate1(@Qualifier("mongockTemplateDb1") MongockTemplate mongockTemplate1) {
  mongockTemplate1.save("save to database1");
}

@ChangeSet(order = "006", id = "changeWithMongockTemplate2", author = "mongock")
public void changeWithMongockTemplate2(@Qualifier("mongockTemplateDb2") MongockTemplate mongockTemplate2) {
  mongockTemplate2.save("save to database2");
}

3. 独立配置变更日志表(可选)

如果两个数据库需要独立记录变更执行历史,需为每个Mongock实例配置不同的lockCollectionName和changeLogCollectionName,避免日志表冲突。

内容的提问来源于stack exchange,提问作者Amit Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 07:14:59