我有一个启动的服务,尝试加入它的种子节点。此外,服务节点收到的所有死信都应发布到集群,以便可以将其报告给仪表板。我在那里的设置如下:
_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,现在我们有了无限。
我只是想找到正确的事情来检查忽略试图在所有公布,如果它在集群的甚至没有。