【发布时间】:2018-04-09 23:32:20
【问题描述】:
我一直在使用 Akka 应用程序。 95% 的代码是由纯演员编写的。现在我要将应用程序的某些部分移至 Akka Streams。 让我了解以下逻辑在 Akka Streams 方面的外观:
+------------+
| CreateUser |
+------------+
|
|
+------------+ +-------------------+
| CheckEmail |-----|EmailIsAlreadyInUse|
+------------+ +-------------------+
|
|
+------------+ +-------------------+
|3rdPartyCall|-----|NoUserInInternalDB |
+------------+ +-------------------+
|
|
+------------+ +-------------------+
| SaveUser |-----| UserDBError |
+------------+ +-------------------+
|
|
+------------+
| UserSaved |
+------------+
在当前的实现中,所有块都是我发送给适当参与者的消息。如果消息流成功,我会向发件人发回UserSaved 消息。否则,我会将其中一条验证消息发回给发件人:EmailIsAlreadyInUse 或 NoUserInInternalDB 或 UserDBError。
这是一组消息:
case class CreateUser(email: String)
case class CheckEmailUniqueness(email: String)
case class ExternalServiceValidation(email: String)
case class SaveUser(email: String)
sealed trait CreateUserResult
sealed trait CreateUserError
case class UserCreated(email: String) extends CreateUserResult
case class EmailIsAlreadyInUse(email: String) extends CreateUserResult with CreateUserError
case class NoUserInExternalDB(email: String) extends CreateUserResult with CreateUserError
case class UserDBError(email: String) extends CreateUserResult with CreateUserError
如何将此逻辑迁移到 Akka Streams?
【问题讨论】:
标签: scala akka akka-stream