代码之家  ›  专栏  ›  技术社区  ›  WesternGun

ReactiveMongoDatabase:如何预先创建集合:无法在多文档事务中创建命名空间

  •  0
  • WesternGun  · 技术社区  · 4 年前

    @SpringBootTest

    bean是(如果我想使用reactive,那么这就是我应该使用的bean?)

        @Bean
        Mono<MongoDatabase> reactiveMongoDatabase() {
            // recommended way in ReactiveMongoTransactionManager javadoc
            log.info("Creating reactiveMongoDatabase...");
            return ReactiveMongoDatabaseUtils.getDatabase(properties.getDatabase(), reactiveMongoDatabaseFactory());
        }
    

        @Autowired
        private ReactiveMongoTemplate template;
    
        @BeforeEach
        private void createColletion() {
            //mongoDatabase.createCollection("Coupon");
            template.createCollection(Coupon.class);
        }
    

    [ENV=itest] [productName=promotion-facts-sync] [2020-03-19T14:26:09.801Z] [ERROR] [MSG=[Thread-20] e.v.c.p.f.service.SyncProcessService - Error while processing empty message. Cause: Cannot create namespace promotion-facts-sync.Coupon in multi-document transaction.; nested exception is com.mongodb.MongoWriteException: Cannot create namespace promotion-facts-sync.Coupon in multi-document transaction. ][TRACE=] [SPAN=]
    

    怎么做?

    0 回复  |  直到 4 年前
        1
  •  1
  •   WesternGun    4 年前

    现在作为一个解决方法,我使用 mongobee 在任何插入之前进行迁移。它不支持ReactiveMongoDatabase,但至少可以创建集合。