оргонизивать блокировку между jvm
кейс из базы надо прочитать задачу (select по ид) и выполнить ее, как выполниться отметить что задача выполнена (сделать апдейт поля). И важно что бы второе приложение в этот момент не сделала тоже самое. (горизонтальное маштобирование приложения)
те блокировку по ид.
сделать на уровне базы
или сделать через hazelcast
или есть болеее элегантный путь?
как вариант - пометить задачу как взятую в работу с отметкой о времени взятия и отметкой о завершении. если нет отметки о завершении - задача снова свободна для взятия спустя таймаут. попытка одновременно взять задачу и пометить ее двумя подами - через блокировку субд или через оптимистичную блокировку с версиями.
что-то похожее делает движок камунды bpmn по запланированным задачам, насколько знаю
посмотрю, спасибо за напровление
Да без разницы в чем. Хазел вроде только когда-то что-то где-то терял, но я не знаю что там за альтернатива в виде базы. https://medium.com/ayte-io/distributed-locks-semaphores-again-36d35c36b21e
спасибо за статью!!!
select for update не подойдет?
надо почитать, не смотрел на эту конструкцию, там блокировка по селекту?
да, ты в транзкции делаешь на запись select for update и потом в текущей же тразакции апдейтишь эту запись. другие транзакции не могут сделать селект на этой строчке (как то так работает)
то что нужно, спасибо
Обсуждают сегодня