gpt4 book ai didi

scala - 使用 Akka Hello World 示例的简单并发

转载 作者:行者123 更新时间:2023-12-04 15:11:48 27 4
gpt4 key购买 nike

我正在为分布式服务层评估 Akka,以下示例打印 Hello {n} 10 次,但一个接一个地打印。据我了解,这对于 Akka Actor 来说是有意的,那么我该从哪里开始让它并发呢?

import akka.actor._

object HelloActor {
case class SayHello(message: String)
}

class HelloActor extends Actor {
def receive = {
case HelloActor.SayHello(message) =>
Thread.sleep(1000)
println(message)
}
}

object Main extends App {
val system = ActorSystem("ActorSystem")

val hello = system.actorOf(Props[HelloActor])

for (i <- 1 to 10) {
hello ! HelloActor.SayHello(s"Hello $i")
}
}

我已经尝试从 Main 类中创建多个 Actor ,但不知何故感觉不对,我不应该只调用 Actor 然后它自己处理并发/产生更多 Actor 吗?任何人都可以提供一个例子(最好修改上面的代码)。我一直在阅读和阅读,但感觉需要立即接受很多东西,我觉得我只是在这里某处遗漏了一个关键概念。

最佳答案

对于您的用例,您可能希望使用 Routers .

例如:

val hello = system.actorOf(Props[HelloActor].withRouter(
RoundRobinRouter(nrOfInstances = 10)))

hello ! HelloActor.SayHello("Hello!") // Sends to one of the 10

作为旁注,您应该避免在您的 Actor 的 Thread.sleep 中阻塞(即 receive )方法。

关于scala - 使用 Akka Hello World 示例的简单并发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20291340/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com