ReactiveMongoDatabase: Как создать коллекцию заранее: не удается создать пространство имен в многодокументной транзакции - PullRequest
0 голосов
/ 19 марта 2020

В моем @SpringBootTest кажется невозможным создать коллекцию в ReactiveMongoDatabase, но это должно быть легко. Любая помощь?

Бин есть (я полагаю, если я хочу использовать реактивный, это боб, который я должен использовать?)

    @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=]

Как это сделать?

1 Ответ

0 голосов
/ 19 марта 2020

Теперь в качестве обходного пути я использую mongobee для миграции перед любой вставкой. Он не поддерживает ReactiveMongoDatabase, но, по крайней мере, может создать коллекцию.

Любой, у кого есть лучшее решение, может опубликовать его, спасибо.

...