У меня есть актер в Акке, который будет обрабатывать сообщения для создания определенных объектов. Некоторые поля этих объектов вычисляются на основе состояния других объектов в базе данных в момент создания.
Я бы хотел избежать создания условия гонки, когда обработка актера идет быстрее, чем база данных может сохранять объекты. Это может привести к несогласованным данным, следующим образом:
- Актер создает
Foo
и отправляет его другим участникам для дальнейшей обработки и сохранения - Актеру предлагается создать еще один
Foo
. Поскольку первый еще не сохранен, новый создается на основе старого содержимого БД, тем самым создавая неправильныйFoo
.
Теперь эта возможность довольно удалена, так как создание Foo
будет запускаться вручную. Но по-прежнему возможно, что двойной щелчок может вызвать проблемы при высокой нагрузке. И кто знает, будет ли завтра Foo
автоматически создано.
Следовательно, мне нужен какой-то способ заставить актера ждать и возобновить его работу только после подтверждения того, что Foo
сохранено.
Есть ли способ поставить актера в состояние ожидания и сказать ему возобновить его операции через некоторое время?
В принципе, я хотел бы использовать почтовый ящик в качестве очереди сообщений и контролировать скорость обработки очереди.