Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 死信错误_Scala_Akka - Fatal编程技术网

Scala 死信错误

Scala 死信错误,scala,akka,Scala,Akka,我在运行无法解决的项目时遇到错误 这是我的密码: import akka.actor._ import akka.actor.Actor import akka.actor.Props import akka.actor.ScalaActorRef import akka.pattern.gracefulStop import akka.util._ import java.util.concurrent._ import scala.Array._ import scala.concurren

我在运行无法解决的项目时遇到错误

这是我的密码:

import akka.actor._
import akka.actor.Actor
import akka.actor.Props
import akka.actor.ScalaActorRef
import akka.pattern.gracefulStop
import akka.util._
import java.util.concurrent._
import scala.Array._
import scala.concurrent._
import scala.concurrent.duration._
import scala.concurrent.ExecutionContext.Implicits.global

sealed trait Message
case class Start() extends Message
case class Stop() extends Message
case class TickMessage() extends Message
case class ChangePeriodMessage(period: Int) extends Message

class Clock extends Actor {
    val period: Int = 500//change into var

    def active: Receive = {
        case TickMessage => {
            context.parent ! TickMessage
            context.system.scheduler.scheduleOnce(period milliseconds, self, TickMessage)
        }
        //case ChangePeriodMessage(p3riod) => period = p3riod
        case Stop =>
            println("Clock: stopping")
            context.unbecome()
    }

    def receive = {
        case Start => {
            println ("start")
            context.become(active)
            context.system.scheduler.scheduleOnce(period milliseconds, self, TickMessage)
        }
    }
}

class Gps extends Actor {
    val clock = context.system.actorOf(Props[Clock], name = "clock")
    def receive = {
        case Start => clock ! Start
        case TickMessage => println ("tick")
        case ChangePeriodMessage(period) => clock ! ChangePeriodMessage(period)
        case _       => println ("GPS: received unknown message")//delete
    }
}

object main extends App {
    val system = akka.actor.ActorSystem("mySystem")
    val gps = system.actorOf(Props[Gps], name = "gps")

    gps ! Start
}
然后是错误:

[INFO] [08/29/2014 11:02:28.479] [mySystem-akka.actor.default-dispatcher-3] 
[akka://mySystem/user] Message [TickMessage$] from Actor[akka://mySystem/user/clock#-
1170129640] to Actor[akka://mySystem/user] was not delivered. [1] dead letters 
encountered. This logging can be turned off or adjusted with configuration settings 
'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
停止前重复多次。
我正在尝试让参与者发送心跳消息,但当/如果参与者停止/重新启动时,消息将转到
死信

您的计划消息发送将继续发送消息,因为参与者不再可用。创建计划发送时获得的actorRef将指向死信

如果您想避免在关机期间收到发送到死信的消息,可以通过覆盖actor中的
postStop()
preRestart(…)
来添加生命周期挂钩,并使这些挂钩取消从调度发送事件中获得的
可取消的


或者,您可以按照日志条目所示,使用config关闭关机期间的死信记录。

我猜
Clock
演员应该是
Gps
的孩子吧?如果是这样,您应该像这样创建它
val clock=context.actorOf(Props[clock],name=“clock”)
。我没有发现那个!非常感谢。