Scala Akka IO(Tcp)获取命令失败的原因

Scala Akka IO(Tcp)获取命令失败的原因,scala,akka,Scala,Akka,下面是Actor使用IO(Tcp)的示例 为了实验,我已经运行了两次,所以它试图绑定到803端口。显然我有个错误 问:我怎样才能知道“命令失败”的原因?在application.conf中,我启用了slf4j和调试级别的日志,然后我的日志中出现了一个错误 DEBUG akka.io.TcpListener-端点上TCP通道的绑定失败[localhost/127.0.0.1:803]:java.net.BindException:已在使用的地址:Bind 但为什么这只是调试级别?我不想让所有Ac

下面是Actor使用IO(Tcp)的示例

为了实验,我已经运行了两次,所以它试图绑定到803端口。显然我有个错误

问:我怎样才能知道“命令失败”的原因?在application.conf中,我启用了slf4j和调试级别的日志,然后我的日志中出现了一个错误

DEBUG akka.io.TcpListener-端点上TCP通道的绑定失败[localhost/127.0.0.1:803]:java.net.BindException:已在使用的地址:Bind

但为什么这只是调试级别?我不想让所有ActorSystem都记录他们的事件,我想知道CommandFailed事件的原因(比如java.lang.Exception实例,我可以制作
e.printStackTrace()

比如:
case c@CommandFailed=>val e:Exception=c.getReason()


也许这不是阿克卡的方式?那么如何获取诊断信息呢?

我知道您有两个问题

  • 如果您同时运行相同的代码,则bot参与者正试图绑定到相同的端口(在您的情况下是,
    803
    ),这是不可能的,除非绑定的端口解除绑定并关闭连接,以便另一个可以绑定
  • 您可以导入
    akka.event.Logging
    并将
    val log=Logging(context.system,this)
    放在参与者的开头,这将记录参与者的所有活动,并。。。 它还显示了参与者的名称、相应的参与者系统和主机+端口(如果您使用的是akka集群)

  • 希望这对你有所帮助,以下是你能做的-找到仍然存在的PID,然后杀死它

    在Mac上-

    lsof-i:端口号 然后 kill-9数字