在我们的参与者系统中,使用分片和持久性,我们的一个实现的具体实例ReceivePersistentActor
一旦被终止(钝化)就不会被重新使用,因为它们代表由为每个新会话生成的 GUID 标识的客户端会话。
当会话结束时,ReceivePersistentActor
负责清理它自己的持久性数据并调用DeleteSnapshots
and DeleteMessages
,它工作正常。一旦处理了这些调用,actor 将Context.Parent.Tell(new Passivate(PoisonPill.Instance));
终止。之后,事件日志仍将包含一个EntityStoppedManifest
条目 ( "CD"
),因为这是通过Passivate
消息生成的。随着时间的推移,这将导致许多"CD"
条目留在事件日志中。
是否有清理此类残留条目的推荐方法?
也许是一个单独的看门人演员手动清理这些条目?
或者这甚至是我们的设计缺陷?