Распределенные блокировки в PostgreSQL
Мне известны следующие варианты:
- Advisory lock - придумываем константу и используем pg_advisory_lock и pg_try_advisory_lock
- Создаем таблицу блокировок и в этой таблице создаем запись. Если запись создана, то блокировка успешна. Для удаления блокировки удаляем запись.
- Можно переиспользовать shedlock и соорудить что-то типа https://github.com/batsura-sa/distributed-lock-shedlock/blob/master/src/main/java/org/j262/lock/api/DistributedLock.java