sender.tell([Message], context.parent)
主要的类别是:
object Starbucks extends App {
implicit val system = ActorSystem.create("StarBucks")
val employees = List(
system.actorOf(Props[Employee], "Penny"),
system.actorOf(Props[Employee], "Leonard"),
system.actorOf(Props[Employee], "Sheldon")
)
val customers = List(
("Raj", "Tall Latte Machiato"),
("Howard", "Double Tall Cappuccino"),
("Bernadette", "Grande Spicy Pumpkin Latte"),
("Amy", "Dopio Espresso")
)
val starBucks = system.actorOf(
Props.empty.withRouter(SmallestMailboxRouter(routees=employees)))
customers foreach { request =>
println("Customer %s orders a %s".format(request._1, request._2))
starBucks ! CanIHave(request._1, request._2)
}
}
路由的执行元类为:
class Employee extends Actor {
def receive = {
case CanIHave(coffee, name) => {
println("Employee %s writes '%s' and '%s' on a cup".format(self.path.name, coffee, name) )
sender.tell(MakeCoffee(coffee, name), context.parent)
}
case MakeCoffee(coffee, name) => {
println("Employee %s makes a %s for %s ".format(self.path.name, coffee, name) )
sender.tell(CoffeeReady(coffee, name), context.parent)
}
case CoffeeReady(coffee, name) => {
println("Employee %s shouts: %s for %s is ready!".format(self.path, name, coffee, name))
}
}
}
您的问题是,您的路由不是由路由器本身创建的,而是由Akka系统创建的:
system.actorOf(Props[Employee], "Penny")
因此,员工级别的context.parent
将返回Akka系统,该系统将您的消息重定向到死信邮箱。
编辑:根据文档,请参阅路由器、路由和发件人一节,其中明确说明
Note that different code would be needed if the routees were
not children of the router, i.e. if they were provided when the router was created.
如何从Akka HTTP路由向Akka Sink发送元素/消息?我的HTTP路由仍然需要返回正常的HTTP响应。 我想这需要一个支流/枢纽。正常的HTTP路由是来自HttpRequest的流- 下面是一个非常简单的单路由akka http应用程序。为了简单起见,我使用了一个简单的println水槽。我的生产用例显然将涉及一个不那么琐碎的水槽。 编辑:或者在使用低级akka http API时,如何
对于路由器的重要性,我的脑海中一直存在着这样的疑问。我在当前的项目中使用了Akka路由器。但是,我对它的重要性有点困惑。出了下面两种方法,哪一种更有好处。 具有路由器和路由。 根据需要创建尽可能多的演员。 所以我想了解一下上面的设计哪一个更好呢?或者换句话说,在这种情况下(1)比(2)有优势,反之亦然。
在阅读了Akka的文档和网上的一些帖子之后,我仍然对路由器和调度器之间的关系没有一个清楚的认识。 1)路由器是否总是使用dispatcher向路由进行调度?路由器是否可以不使用dispatcher完成其工作? 2)如果配置中没有定义额外的调度器,我的理解是将使用默认调度器。在我的actor系统中,我有一个集群,其中有两个生产者actor使用路由器actor和三个消费者actor。生产者和消费者都运
考虑以下事项: 我有一个应用模板,一个HeaderTemboard,和参数化的路由集与相同的处理程序(在应用模板)。我希望在没有找到东西的时候能够服务404路线。例如, /CA/SanFrancisco应该由区域查找和处理,而 /SanFranciscoz应该是404。 下面是我如何快速测试路线的。 问题是 /SanFranciscoz总是由区域页面处理,但我希望它是404。此外,如果我向第一个路
有人能解释一下(如果可能的话,用一些代码或参考)独立路由器和自包含的路由器参与者之间有什么区别吗? 提前谢谢你。 编辑: 与此相比有何不同?: 在性能或能力方面有什么区别吗?