在经典的Akka actor中,有一个sender()
方法来获取发送者。我使用akka.io.Udp
来向多个actor进行UDP组播。
override def preStart(): Unit = {
super.preStart()
val manager = Udp(context.system).manager
println(s"Sending req to bind to ${localInet}")
manager ! Udp.Bind(self, localInet)
}
override def receive: Receive = {
case Udp.Bound(localAddress) => {
println(s"UdpConn Actor: ${sender()}")
println(s"Bound to ${localAddress}")
timers.startTimerWithFixedDelay("DISCOVERY", SendDiscovery, 1.seconds)
context.become(ready(sender()))
}
}
这是我在akka classic中的版本。有没有办法在类型化版本中得到Udp sender actor ref,因为它没有sender()版本。
我试着搜索IO和UDP的类型化版本,但在akka文档上找不到任何东西。
1条答案
按热度按时间thtygnil1#
sender
在Akka Typed中不可用,因为它没有有意义的类型。到目前为止,还没有类型化的IO版本。现在最惯用的方法是产生一个经典的参与者来与IO/UDP交互,并在类型化的参与者和IO/UDP参与者之间适配/转发消息。