Akka类型化执行元无法获取UDP发送方

bgtovc5b  于 2022-11-29  发布在  其他
关注(0)|答案(1)|浏览(151)

在经典的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文档上找不到任何东西。

thtygnil

thtygnil1#

sender在Akka Typed中不可用,因为它没有有意义的类型。
到目前为止,还没有类型化的IO版本。现在最惯用的方法是产生一个经典的参与者来与IO/UDP交互,并在类型化的参与者和IO/UDP参与者之间适配/转发消息。

相关问题