Активация Batch только на одном экземпляре сервера

голоса
0

У меня есть Nginx loadbalancer перед двух экземпляров TOMCAT каждые содержит приложение пружинных загрузок. Каждое приложение весны загрузки выполняет партию, которая записывает данные в базе данных. Партия выполняет каждый день в 1am. Проблема заключается в том, что оба экземпляра выполнить серию Simultaniously, которые я не хочу.

Есть ли способ сохранить batchs развернутый в двух случаях и сказать или Nginx кота, чтобы начать партию в главном сервере (и подчиненный сервере не запускается партии).

Если один из серверов останавливается, второй сервер может начать партию от его имени.

Есть инструмент в Nginx или коте (или какая-либо другая технология), чтобы сделать это?

заранее спасибо.

Задан 14/02/2020 в 00:02
источник пользователем
На других языках...                            


1 ответов

голоса
0

Spring Batch использует базу данных для своих рабочих мест (JobsRepository). По умолчанию в памяти источника данных используется для отслеживания запущенных заданий и их статус. В вашей установке, 2 экземпляры (скорее всего), используя свои собственные базы данных памяти. Несколько экземпляров Spring Batch может координировать друг с другом, как кластер и один может выполнять задания, в то время как другая резервная actasa, если jobsRepository база данных является общим. Для этого вам нужно настроить 2 экземпляра использовать общий источник данных.

Вот некоторые документы: https://docs.spring.io/spring-batch/docs/current/reference/html/index-single.html#jobrepository

https://docs.spring.io/spring-batch/docs/current/reference/html/job.html#configuringJobRepository

Ответил 14/02/2020 в 03:00
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more