коллеги, есть вопрос!
Каким образом можно подключить cockpit для нескольких экземпляров системы, использующих разные базы? Используем движок встроенный в spring boot приложение.
коллеги, есть вопрос!
Каким образом можно подключить cockpit для нескольких экземпляров системы, использующих разные базы? Используем движок встроенный в spring boot приложение.
Что имеется ввиду под “несколькими камундами”?
Это?
https://docs.camunda.org/manual/7.15/webapps/cockpit/dashboard/#multi-engine
Все верно)
интересует пример настроенного подключения Cockpit к нескольким базам Camunda.
Начали с настроек приведенных в документации и сразу проблемы если хотим подключить несоклько баз:
spring:
datasource:
url: jdbc:postgresql://localhost:5432/camunda_primary
username: postgres
password:
second-datasource:
url: jdbc:postgresql://localhost:5432/camunda_second
username: postgres
password:third-datasource:
url: jdbc:postgresql://localhost:5432/camunda_third
username: postgres
password:
Caused by: java.lang.IllegalArgumentException: dataSource or dataSourceClassName or jdbcUrl is required.
at com.zaxxer.hikari.HikariConfig.validate(HikariConfig.java:1004) ~[HikariCP-3.4.5.jar:na]
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:109) ~[HikariCP-3.4.5.jar:na]
at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:158) ~[spring-jdbc-5.3.4.jar:5.3.4]
at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:116) ~[spring-jdbc-5.3.4.jar:5.3.4]
at org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.invoke(TransactionAwareDataSourceProxy.java:223) ~[spring-jdbc-5.3.4.jar:5.3.4]
at com.sun.proxy.$Proxy72.getMetaData(Unknown Source) ~[na:na]
Добрый день!
Не скажу про Spring Boot и Embedded Engine - не доводилось организовывать на нем multiple engines. В Camunda Standalone на основе Tomcat (как и в других серверах приложений) делается так:
Сконфигурировать дополнительные процессные движки bpm-platform.xml
<process-engine name="secondCamunda">
<job-acquisition>default</job-acquisition>
<configuration>org.camunda.bpm.engine.impl.cfg.StandaloneProcessEngineConfiguration</configuration>
<datasource>java:jdbc/secondCamunda</datasource>
<properties>
<property name="history">full</property>
<property name="databaseSchemaUpdate">true</property>
<property name="authorizationEnabled">true</property>
<property name="jobExecutorDeploymentAware">true</property>
<property name="historyCleanupBatchWindowStartTime">00:01</property>
</properties>
</process-engine>
<process-engine name="thirdCamunda">
<job-acquisition>default</job-acquisition>
<configuration>org.camunda.bpm.engine.impl.cfg.StandaloneProcessEngineConfiguration</configuration>
<datasource>java:jdbc/thirdCamunda</datasource>
<properties>
<property name="history">full</property>
<property name="databaseSchemaUpdate">true</property>
<property name="authorizationEnabled">true</property>
<property name="jobExecutorDeploymentAware">true</property>
<property name="historyCleanupBatchWindowStartTime">00:01</property>
</properties>
Настроить подключения к базам в server.xml:
<Resource name="jdbc/secondCamunda"
auth="Container"
type="javax.sql.DataSource"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
uniqueResourceName="secondCamunda"
driverClassName="org.postgresql.Driver"
url="jdbc:postgresql://localhost:5432/bff_underwriting"
defaultTransactionIsolation="READ_COMMITTED"
username="postgres"
password=""
maxTotal="20"
minIdle="5"
maxIdle="20" />
<Resource name="jdbc/thirdCamunda"
auth="Container"
type="javax.sql.DataSource"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
uniqueResourceName="secondCamunda"
driverClassName="org.postgresql.Driver"
url="jdbc:postgresql://localhost:5432/bff_scoring"
defaultTransactionIsolation="READ_COMMITTED"
username="postgres"
password=""
maxTotal="20"
minIdle="5"
maxIdle="20" />
В итоге в веб-приложениях появляется возможность переключения между процессными движками:
Должен сказать, что это не очень удобно.
Есть более адекватные альтернативы:
Вобщем, ошибка с подключением нескольких датасорцов решилась указанием правильных проперти (jdbc-url, вместо url):
spring:
datasource:
jdbc-url: jdbc:postgresql://localhost:5432/camunda_primary
username: postgres
password:
driver-class-name: org.postgresql.Driver
second-datasource:
jdbc-url: jdbc:postgresql://localhost:5432/camunda_second
username: postgres
password:third-datasource:
jdbc-url: jdbc:postgresql://localhost:5432/camunda_third
username: postgres
password:
@Configuration
public class DataSourceConfig {
@Bean
@Primary
@ConfigurationProperties(prefix=“spring.datasource”)
public DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
}@Bean(name="secondDataSource") @ConfigurationProperties(prefix="spring.second-datasource") public DataSource secondDataSource() { return DataSourceBuilder.create().build(); } @Bean(name="thirdDataSource") @ConfigurationProperties(prefix="spring.third-datasource") public DataSource thirdDataSource() { return DataSourceBuilder.create().build(); }
}
@Mstislav использовать сервер приложений для нас не вариант. Будем искать возможность использовать spring boot.