#spring #properties #spring-batch #spring-cloud-dataflow
Вопрос:
Я пытаюсь передать глобальные свойства в составленные задачи. Когда я указываю каждое задание, оно работает, но есть дублирование конфигурации. Я пробовал несколько подходов, но свойства заданы неправильно.
Мой проект (jar) содержит несколько пакетных заданий Spring. Какой из них выполняется, зависит от аргумента java. Задача CSDF выглядит следующим образом:
download: my-task 'COMPLETED'->status_ok: my-task 'FAILED'->status_error: my-task
Поскольку я использую базу данных для своего проекта, мне нужно указать источник данных для SCDF, а также для JPA. Следовательно, я переопределяю DefaultTaskConfigurer.
Конфигурация, которая работает, выглядит следующим образом:
app.my-task.download.spring.batchdatasource.driver-class-name=org.mariadb.jdbc.Driver
app.my-task.download.spring.batchdatasource.password=rootpw
app.my-task.download.spring.batchdatasource.url=jdbc:mysql://mysql:3306/dataflow
app.my-task.download.spring.batchdatasource.username=root
app.my-task.download.spring.datasource.driver-class-name=org.postgresql.Driver
app.my-task.download.spring.datasource.password=pw
app.my-task.download.spring.datasource.url=jdbc:postgresql://postgres:5432/csv
app.my-task.download.spring.datasource.username=root
app.my-task.status_ok.spring.batchdatasource.driver-class-name=org.mariadb.jdbc.Driver
app.my-task.status_ok.spring.batchdatasource.password=rootpw
app.my-task.status_ok.spring.batchdatasource.url=jdbc:mysql://mysql:3306/dataflow
app.my-task.status_ok.spring.batchdatasource.username=root
app.my-task.status_ok.spring.datasource.driver-class-name=org.postgresql.Driver
app.my-task.status_ok.spring.datasource.password=pw
app.my-task.status_ok.spring.datasource.url=jdbc:postgresql://postgres:5432/csv
app.my-task.status_ok.spring.datasource.username=root
app.my-task.status_error.spring.batchdatasource.driver-class-name=org.mariadb.jdbc.Driver
app.my-task.status_error.spring.batchdatasource.password=rootpw
app.my-task.status_error.spring.batchdatasource.url=jdbc:mysql://mysql:3306/dataflow
app.my-task.status_error.spring.batchdatasource.username=root
app.my-task.status_error.spring.datasource.driver-class-name=org.postgresql.Driver
app.my-task.status_error.spring.datasource.password=pw
app.my-task.status_error.spring.datasource.url=jdbc:postgresql://postgres:5432/csv
app.my-task.status_error.spring.datasource.username=root
batchdatasource.* свойства предназначены для SCDF и источника данных.* предназначены для моего личного использования. Это работает как заклинание, оба источника данных инициализированы.
Кроме того, аргументы запуска выглядят следующим образом:
app.download.0=--jobName=download
app.status_error.0=--status=Error
app.status_error.1=--jobName=status
app.status_ok.0=--status=Ok
app.status_ok.1=--jobName=status
But as you can see, there is a lot of duplicity. I tried to do it this way
app.*.spring.batchdatasource.driver-class-name=org.mariadb.jdbc.Driver
app.*.spring.batchdatasource.password=rootpw
app.*.spring.batchdatasource.url=jdbc:mysql://mysql:3306/dataflow
app.*.spring.batchdatasource.username=root
app.*.spring.datasource.driver-class-name=org.postgresql.Driver
app.*.spring.datasource.password=pw
app.*.spring.datasource.url=jdbc:postgresql://postgres:5432/csv
app.*.spring.datasource.username=root
and this way
app.my-task.*.spring.batchdatasource.driver-class-name=org.mariadb.jdbc.Driver
app.my-task.*.spring.batchdatasource.password=rootpw
app.my-task.*.spring.batchdatasource.url=jdbc:mysql://mysql:3306/dataflow
app.my-task.*.spring.batchdatasource.username=root
app.my-task.*.spring.datasource.driver-class-name=org.postgresql.Driver
app.my-task.*.spring.datasource.password=pw
app.my-task.*.spring.datasource.url=jdbc:postgresql://postgres:5432/csv
app.my-task.*.spring.datasource.username=root
but none of this works. What am I doing wrong ?
As you can see, properties were not set for this task execution.