在无法加入群集的情况下将DeadLetters发布到群集会导致内存泄漏

时间:2019-02-02 21:34:29

标签: akka.net akka.net-cluster

我有一个启动的服务,尝试加入它的种子节点。此外,服务节点收到的所有死信都应发布到集群,以便可以将其报告给仪表板。我在那里的设置如下:

_deadLetterActor = system.ActorOf(Props.Create(() => new DeadLetterPublisherActor(
    config, LoggingService
)));

system.EventStream.Subscribe(_deadLetterActor, typeof(DeadLetter));

该actor中的处理程序除了将消息打包并将其发布到集群之外,什么也不做:

var mediator = DistributedPubSub.Get(Context.System).Mediator;
var pubsubMessage = new Publish(
    topic: _config.Cluster.DeadLetterPublishTopic, 
    message: bundledMessage
);

mediator.Tell(pubsubMessage);

当服务启动,并且不能加入它的种子节点然而,存储器只是气球直到进程崩溃。

我认为这是有一定道理的,因为它无法加入群集,因此错误不断堆积。我的问题是,如何解决这个问题?

我当时想我可以借用https://stackoverflow.com/a/34197270/1060314这个想法,并且只有在我的节点已加入集群时才开始发布死信。

我了解了基本如何进行无限循环。它无法加入触发DeadLetter的集群,该集群将发布并触发另一个DeadLetter,现在我们有了无限。

我只是想找到正确的事情来检查忽略试图在所有公布,如果它在集群的甚至没有。

0 个答案:

没有答案