Как настроить camunda на работу с двумя базами данных?

Добрый день!

В документации Camunda описаны следующие конфигурационные настройки источников данных..

В соответствии с этими настройками написал конфигурацию:
application.yaml.txt (575 Байт)

DbConfig.java.txt (1.2 КБ)

При выполнении появляется ошибка:

Error creating bean with name ‘camundaIntegrationDeterminator’: Unsatisfied dependency expressed through field ‘processEngine’; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘processEngineFactoryBean’: FactoryBean threw exception on object creation; nested exception is java.lang.IllegalArgumentException: dataSource or dataSourceClassName or jdbcUrl is required.

Эта же ошибка была при явном создании компонентов (как в примере):

  • EntityManagerFactory
  • TransactionManager

При чем без добавления зависимостей camunda ошибки этой нет.
Нужно ли их добавлять в класс или не обязательно?

Рискну предположить, что у Вас неправильно заполнены properties.
Попробуйте вместо:

spring.datasource.primary:
  url: jdbc:postgresql://localhost:5432/camunda?autoReconnect=true
  username: postgres
  password: postgres
  driver-class-name: org.postgresql.Driver

spring.datasource.secondary:
  url: jdbc:postgresql://localhost:5432/camunda2?autoReconnect=true
  username: postgres
  password: postgres
  driver-class-name: org.postgresql.Driver

Сделать в соответствии с требованиями YAML:

spring:
  datasource:
    primary:
      url: jdbc:postgresql://localhost:5432/camunda?autoReconnect=true
      username: postgres
      password: postgres
      driver-class-name: org.postgresql.Driver
    secondary:
      url: jdbc:postgresql://localhost:5432/camunda2?autoReconnect=true
      username: postgres
      password: postgres
      driver-class-name: org.postgresql.Driver

P.S. IDEA подскажет правильный формат записи :wink:

Попробовал - та же ошибка.

Может есть где примеры с работающей настройкой Camunda на две базы?

А вот так запустилось! Только почему-то camunda работает с базой по умолчанию (h2 in memory):
@Bean
@Primary
@ConfigurationProperties(“datasource.primary”)
public DataSourceProperties primaryDataSourceProperties() {
return new DataSourceProperties();
}
@Bean
@Primary
@ConfigurationProperties(“datasource.primary.configuration”)
public HikariDataSource primaryDataSource() {
return primaryDataSourceProperties().initializeDataSourceBuilder().type(HikariDataSource.class).build();
}
@Bean
@ConfigurationProperties(“datasource.secondary”)
public BasicDataSource secondaryDataSource() {
return DataSourceBuilder.create().type(BasicDataSource.class).build();
}

Все заработало!
Неправильно были указаны @ConfigurationProperties (для моего application.yaml нужно spring.datasource.primary и т.д.).

Описание как нужно конфигурировать здесь.

2 лайка