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”)
。我没有发现那个!非常感谢。