加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 只要演员被放入路由器就会遇到“死信”

发布时间:2020-12-16 09:28:33 所属栏目:安全 来源:网络整理
导读:这就是我所发现的,对于我的生活,我无法理解其中的原因.我正在创建基本上不做任何事情的“打印机”演员,或者根据他们收到的消息类型打印消息. class Printer extends Actor { def receive = { case m: SomeMessage = println( m.text ) case _ = }} 我正在创
这就是我所发现的,对于我的生活,我无法理解其中的原因.我正在创建基本上不做任何事情的“打印机”演员,或者根据他们收到的消息类型打印消息.

class Printer extends Actor {
    def receive = {
        case m: SomeMessage => println( m.text )
        case _ =>
    }
}

我正在创建其中几个演员:

val actor4 = system.actorOf(Props[Printer],"t-4")
val actor5 = system.actorOf(Props[Printer],"t-5")
val actor6 = system.actorOf(Props[Printer],"t-6")

并将它们扔进矢量:

val routees2 = Vector[ActorRef](actor4,actor5,actor6)

我正在做以上操作,以便我可以将它们扔进路由器(并且它们将受路由器的控制).当我运行规范到目前为止,我没有任何问题.一旦我将它们放入路由器并运行规范我就遇到了问题.这是路由器:

val router = system.actorOf(Props[Printer].withRouter(
    BroadcastRouter(routees = routees2)),"router-to-transformers")

现在,当我运行规范时,我有各种各样的死信……

[INFO] [09/23/2013 17:10:21.468] [spider-akka.actor.default-dispatcher-6] [akka://spider/user/router-to-transformers] Message [akka.dispatch.sysmsg.DeathWatchNotification] from Actor[akka://spider/user/router-to-transformers#-1845250548] to Actor[akka://spider/user/rout
er-to-transformers#-1845250548] 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'.
[INFO] [09/23/2013 17:10:21.468] [spider-akka.actor.default-dispatcher-6] [akka://spider/user/router-to-transformers] Message [akka.dispatch.sysmsg.DeathWatchNotification] from Actor[akka://spider/user/router-to-transformers#-1845250548] to Actor[akka://spider/user/rout
er-to-transformers#-1845250548] was not delivered. [2] 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'.
[INFO] [09/23/2013 17:10:21.468] [spider-akka.actor.default-dispatcher-6] [akka://spider/user/router-to-transformers] Message [akka.dispatch.sysmsg.DeathWatchNotification] from Actor[akka://spider/user/router-to-transformers#-1845250548] to Actor[akka://spider/user/rout
er-to-transformers#-1845250548] was not delivered. [3] 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'.

对于我的生活,我无法弄清楚这里发生了什么.我添加了一个测试片段的链接.代码片段中的编号很奇怪,因为我已经删除了一堆被注释掉的不同尝试,以免杂乱无章.我专注于这个死信问题,因为我觉得当我添加更多演员并实际开始传递信息时,事情没有得到传递……
http://snipt.org/AhVf0

值得一提的是,这些演员都是本地人.我已经阅读了关于actor的一些信息,因为它被折旧了,我想知道这是否被使用,部分原因是什么导致了我的问题?这里有很多活动部件,而不是很多稳定,全面的文档.任何帮助将不胜感激.

解决方法

你在这里看到的是没有处理DeathWatchNotifications,这意味着演员(路由器)在终止时仍在观看其子节目.这不会自动成为故障的标志 as documented(但我们应该在此特定消息的情况下更清楚).在这种情况下,摆脱此消息的唯一方法是确保路由器和路由不会“同时”终止.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读