【问题标题】:How to understand logging dead letter akka如何理解记录死信akka
【发布时间】:2021-11-12 23:08:57
【问题描述】:

我在日志中收到了死信演员。并且日志记录的级别为 INFO。但是我没有从 sActor 那里得到哪种方法是死信。以下是日志消息

 akka.actor.DeadLetterActorRef - Message [scala.util.Right] from Actor[akka://marksun-app/user/marksun-api/sActor/$a#-396914220] to Actor[akka://marksun-app/deadLetters] 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'.

我想知道什么是`

$a#-396914220

`

【问题讨论】:

标签: scala akka


【解决方案1】:

$a#-396914220 是演员的名字 ($a),并且该演员是作为名为 sActor 的演员的子代生成的。 396914220 是演员在其中运行的单元格的唯一 ID。

发送消息时不会捕获堆栈跟踪或其他信息,因此无法知道消息是从sActor 的哪个位置发送的。

如果您没有在sActor 中显式生成一个actor 来发送消息,那么最有可能的两个罪魁祸首是使用“询问”模式(这将生成一个临时actor)或可能运行一个流(这将生成一个演员来实现流)。

【讨论】:

  • 抱歉,这可能是个愚蠢的问题。明确产生演员的含义?表示登录 Actor
  • 产卵是在创造一个新的演员......与日志无关。
  • 基本上,作为sActor 子代的actor 正在向另一个actor 发送消息,但该actor 不再存在,因此消息变成了死信。
  • 最后一个问题,这个死信会影响actor(sActor)的队列/池(thread-pool-executor)吗?
  • 不,不会有那样的影响。这可能表明对生命周期有限的参与者的引用被不正确地传播,您打算与之交互的参与者失败。它也可能(如果所讨论的参与者是远程参与者)表明网络问题。或者,如果您在应用程序关闭时看到这些,这是意料之中的正常现象。
猜你喜欢
  • 2014-07-17
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-02
相关资源
最近更新 更多