我正在尝试有条件地更改演员的恢复对象。当一个actor启动并且没有快照或事件被持久化时,我重新启动这个actor。重新启动后,我想更改Recovery
对象。这就是我目前设置演员的方式:
protected Recovery _recovery = Recovery.Default;
public override Recovery Recovery => _recovery;
在PostRestart()
方法中,我有:
protected override void PostRestart(Exception reason)
{
// EmptyJournalException is a custom exception
if (reason is EmptyJournalException)
{
// Other code here...
_recovery = new Recovery(SnapshotSelectionCriteria.None);
}
}
但是,当再次执行恢复过程时,它仍在应用快照。如果我将 的值更改_recovery
为忽略构造函数中的快照,它将按预期工作。但是,将其设置为 时PostRestart()
,它会被忽略。
有条件地设置Recovery
属性的最佳方法是什么?我只想在重新启动演员时设置它,因为EmptyJournalException
.