У меня есть несколько вариантов использования, которые требуют запуска предопределенных событий на основе определенных действий пользователя.
например скажем, когда NewUser
создается в приложении, ему придется вызывать CreateUserInWorkflowSystem
и FireEmailToTheUser
асинхронно. Есть много других бизнес-кейсов такого рода, когда события будут предопределены на основе варианта использования. Я могу использовать Promises/Future для моделирования этих событий, как показано ниже.
if 'NewUser' then
call `CreateUserInWorkflowSystem` (which will be Future based API)
call `FireEmailToTheUser` (which will be Future based API)
if 'FileImport' then
call `API3` (which will be Future based call)
call `API4` (which will be Future based call)
Все эти вызовы Future
должны будут где-то регистрировать сбои, чтобы можно было повторить неудачные вызовы и т. д. Обратите внимание, что вызов NewUser
не будет ждать завершения этих Futures
(событий за скажем).
Это использовало простые Futures/Promises
API. Однако я думаю, что здесь подойдет Akka Persistence и блокирующие вызовы могут по-прежнему наталкиваться на Futures
. С персистентностью Akka будет легко обрабатывать сбои, поскольку она предоставляет их из коробки и т. д. Я понимаю, что персистентность Akka все еще находится на экспериментальной стадии, но это не кажется большой проблемой, поскольку typesafe обычно держит эти новые фреймворки в экспериментальном состоянии перед продвижением в будущем выпуске и т. д. (то же самое было и с макросами). Учитывая эти требования, как вы думаете, Futures/Promises
или постоянство Akka здесь лучше подходят?