当前位置: 首页 > 知识库问答 >
问题:

Akka 2.6如何在Akka中读“死信”?

姚麒
2023-03-14

我读过以下文档https://doc.akka.io/docs/akka/current/general/message-delivery-reliability.html#deal-letters,其中写道:

参与者可以订阅事件流上的类Akka.actor.deadletter,请参见event stream以了解如何做到这一点。

import akka.actor.ActorRef;
import akka.actor.ActorSystem;

final ActorSystem system = ActorSystem.create("DeadLetters");
final ActorRef actor = system.actorOf(Props.create(DeadLetterActor.class));
system.getEventStream().subscribe(actor, DeadLetter.class);

但是在Akka Typed中,Akka.actor.Typed.actorSystem.EventStream()中没有名为subscribe()方法

共有1个答案

上官培
2023-03-14

在创建了处理消息类型DeadLetter的类型化ActorSystem和类型化Actor之后,您应该能够订阅EventStream,如下所示。

import akka.actor.typed.eventstream.EventStream;

system.eventStream().tell(new EventStream.Subscribe(DeadLetter.class, actor));
 类似资料:
  • 背景:我正在使用C#,但我认为这个问题也适用于Java和Scala。我有一个大师级演员,负责传递所有的“工作信息”。这些作业可以同时执行,只要它们不共享“并发id”。为了解决这个问题,我为每个“并发id”生成了一个子角色。然后我用setReceiveTimeout在孩子们空闲时清理他们。 我不明白的是,在没有比赛条件的情况下,我如何做到这一点。这里有两种方法不起作用:1)从字典中删除子项,并告诉子

  • [04/27/2014 18:09:05.518][ReadScheduler-Akka.actor.Default-Dispatcher-3][Akka://ReadScheduler/User/Collector]从参与者[Akka://ReadScheduler/User/Executor#2127791644]到参与者[Akka://ReadScheduler/User/Collector

  • 我有一群演员互相传递很多信息。这些参与者的默认队列很可能会导致很多参与者内存不足。 理想情况下,这是我想要发生的事情: null 注意:我不想对死信进行负载平衡,有些文章建议使用死信队列进行负载平衡。

  • 我想使用SourceQueue将元素动态推送到Akka流源中。Play controller需要一个源,以便能够使用方法对结果进行流式传输。 由于Play使用自己的Akka流接收器,所以我无法使用接收器来实现源队列,因为源在方法使用之前就会被消耗(除非我使用下面的hack)。 如果我使用reactive-streams发布器预物化源队列,我就可以使它正常工作,但这是一种“肮脏的攻击”: 有没有更简

  • 我正在尝试写一个简单的路线系列,下面是我想要发生的事情: 我几乎什么都试过了,却不知道该怎么办。这方面的文档很难理解。 谁能给我指点一下吗?

  • 问题内容: 如何java.lang.Thread用Java 杀死A ? 问题答案: 有关他们为何不赞成使用Sun的内容,请参见此主题。它详细介绍了为什么这是一种不好的方法,以及通常应该采取什么措施才能安全地停止线程。 他们建议的方式是使用共享变量作为标志,要求后台线程停止。然后可以由另一个请求线程终止的对象来设置此变量。