Configurando múltiplos bancos

Vamos pensar o seguinte, nos temos o Job.

O nosso Job irá ler os dados de uma API remota, processar e depois gravar esses registros em um banco de dados.

Mas... e os dados desse Job, onde salvar?

Temos duas opções:

  1. Gravar esses dados no mesmo banco de dados do Spring Batch (não é o ideal).

Porém, essa não é uma boa prática. O ideal é a gente salvar os dados do Spring Batch em um banco reservado, onde nenhum outro Job tenha acesso a esse banco de dados.

  1. Gravar esses dados em outro banco (boa prática)

Teremos um banco de dados primário para o nosso Spring Batch (onde os metadados serão salvos).

Já o nosso Job terá os seus dados gravados em outro banco, próprio para os dados da aplicação.

Configurando múltiplos bancos na aplicação

No phpMyAdmin, criar um outro banco, chamado "app".

Em application.properties, configuraremos primeiro o banco dos metadados (principal) e depois para o Job.

spring.application.name=user-request-springbatch

chunkSize=10
pageSize=10

# Banco para os metadados do Spring Batch
spring.datasource.jdbcUrl=jdbc:mysql://localhost:3307/spring_batch
spring.datasource.username=root
spring.datasource.password=1234567

# Banco para os dados do Job
app.datasource.jdbcUrl=jdbc:mysql://localhost:3307/app
app.datasource.username=root
app.datasource.password=1234567

# Inicializar tabelas de metadados do Spring Batch
spring.batch.jdbc.initialize-schema=always

Agora, criaremos uma classe de configuração para dizer como iremos obter esses datasources. ➡️

Atualizado