在我的应用程序中,我希望每2秒向Worker的所有参与者实例广播一个时间单位。时间单位由主机发送给所有工人。
我正试图通过主演向所有工作人员发送广播消息,但这对我不起作用。我在这里附上了我的测试代码。行中存在编译错误
router ! Broadcast("any message")
"Error: value is not a member of `akka.routing.Router`.
有人能告诉我这里有什么问题吗?即使我将路由器定义为akka.routing。路由器变量。另外,如何每2秒广播一次time_unit消息?
通过路由器向本地参与者广播消息符合逻辑吗?
我可以用我在应用程序中定义的不同类型向每个参与者广播消息,而不指定其类型,甚至不加入特定的路由器吗。
import akka.actor._
import akka.routing.{ ActorRefRoutee, RoundRobinRoutingLogic, Router }
import akka.routing.Broadcast
import akka.routing.RouterActor
object Messages{
object Work
object Terminated
object Time_Unit
}
object MainRouterDriver extends App {
import Messages._
val system = ActorSystem("HelloSystem")
val routingMaster = system.actorOf(Props[Master], name = "helloactor")
routingMaster ! Work
}
class Worker extends Actor{
def receive = {
case _ =>
println("Hi I am a Worker")
}
}
class Master extends Actor {
import Messages._
var router = {
val routees = Vector.fill(5) {
val r = context.actorOf(Props[Worker])
context watch r
ActorRefRoutee(r)
}
akka.routing.Router(RoundRobinRoutingLogic(), routees)
}
def receive = {
case Work =>
router ! Broadcast(Time_Unit)
}
}