我有一个Akka.Net PersistenceQuery,如下所示(在收到RecoveryCompleted
命令之后有条件地运行):
var readJournal = PersistenceQuery.Get(Context.System).ReadJournalFor<SqlReadJournal>(SqlReadJournal.Identifier);
var stream = readJournal.CurrentEventsByPersistenceId("MyPersistenceId", 0, long.MaxValue);
stream.RunForeach(envelope =>
{
OnRecover(envelope.Event);
}, Context.System.Materializer()).Wait();
这完全符合我的期望,但是在此过程中我偶尔会遇到一些死信(即使所有事件都已返回并通过OnRecover()
运行)。我无法始终使这些死信发生,但是消息总是一样的:
Message Continue from akka://ActorSystem/user/StreamSupervisor-14/Flow-0-1-actorPublisherSource-CurrentEventsByPersistenceId-MyPersistenceId-actorPublisherSource to akka://ActorSystem/user/StreamSupervisor-14/Flow-0-1-actorPublisherSource-CurrentEventsByPersistenceId-MyPersistenceId-actorPublisherSource was not delivered. 1 dead letters encountered.
这是什么原因?以及如何防止这些死信将来发生?