【发布时间】:2018-07-13 15:38:33
【问题描述】:
我刚开始使用 Akka Http(和 Scala),想知道是否有任何定义明确的模式来构建 Akka 代码。特别是,我正在寻找用于动态组合/聚合路由的结构模式。特别是,我正在寻找类似于以下伪代码的解决方案:
trait MyActor extends Actor {
val myRouter: ActorRef = context.actorOf(FromConfig.props(Props[MyWorker]), "Worker")
val myRoute = .... //route definition for this trait
}
trait MySecondActor extends Actor {
val mySecondRouter: ActorRef = context.actorOf(FromConfig.props(Props[MySecondWorker]), "SecondWorker")
val myRoute = .... //route definition for this trait
}
然后,在我的主服务器中,只需混合特征以自动获取演员和路线:
class HttpServer extends SomeTrait with MyActor with MySecondActor {
.....
.....
}
上述模式存在一些明显的问题,包括:
- 所有特征都从 Actor 继承,然后混合到同一个类中 - 不确定最终行为会是什么。
- HttpServer类本身成为actor,不能被
new HttpServer()实例化 - 路由未连接。
我正在寻找的是一种模式:
- 允许我在不同的包中分离路由逻辑,并最好将其与相应的参与者捆绑在一起。
- 使路由动态且可发现,而不是在启动时指定它们。
我在 StackOverflow 上遇到了以下两个,但想知道是否有更好的方法和定义明确的模式:
谢谢!
【问题讨论】:
标签: scala akka akka-http akka-cluster