У меня есть служба, которая запускается и пытается присоединиться к ее семенному узлу.Кроме того, любые мертвые письма, которые получает сервисный узел, должны публиковаться в кластере, чтобы о них можно было сообщить на приборную панель.Мои настройки там выглядят следующим образом:
_deadLetterActor = system.ActorOf(Props.Create(() => new DeadLetterPublisherActor(
config, LoggingService
)));
system.EventStream.Subscribe(_deadLetterActor, typeof(DeadLetter));
Обработчик в этом действующем субъекте ничего не делает, кроме как связывает сообщение и публикует его в кластере:
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, который будет публиковать, который будет запускать другой DeadLetter, и теперь у нас есть бесконечность.это даже не в кластере.