Если у вас есть запланированное задание, которое нужно запускать, например, каждые 15 секунд и которое должно запускаться только на одном экземпляре приложения, тогда вы можете использовать ShedLock
Это довольно простой механизм, который в основном делает то же, что вы упомянули - создает таблицу (на самом деле, вам нужно создать ее один раз) и периодически получает блокировку для нее. Вы можете установить, сколько времени он должен быть заблокирован, и некоторые другие вещи.
Работает как с SQL, так и без SQL dbs, например, Postgres и Mon go и требует только одну аннотацию @SchedulerLock
. Смотрите ниже:
@Scheduled(fixedRateString = "PT15S")
@SchedulerLock(name = "copy_records")
public void copyRecords()
{
// do smth on a single instance of an app only
}