2
使用持久性参与者将消息持久存入SQL Server数据库。初始消息格式如下。系统几次运行这种格式,并且这些消息中的许多消息被保存。目前我改变了消息格式以包含如下的几个属性。有人能给我一个想法如何解决这个问题吗?Akka.net持久性参与者恢复失败,消息更改为新属性
目前我面临的问题是恢复最初的持久消息与新的更改失败,并给出如下错误。
“重播persistenceId [tz-persistent-factory]的事件时发生持久性失败。最后已知序列号[0]”
public class PlacedMissionDataCommand : IEntityActorMessage
{
public PlacedMissionDataCommand(int trafficzoneId, int missionId, DateTime finishedTime)
{
TrafficzoneId = trafficzoneId;
MissionId = missionId;
FinishedTime = finishedTime;
TaskGroupId = taskGroupId;
TaskGroupActivated = taskGroupActivated;
TaskGroupCreated = taskGroupCreated;
TestData = testData;
}
public int TrafficzoneId { get; }
public int MissionId { get; private set; }
public DateTime FinishedTime { get; }
public string EntityId => TrafficzoneId.ToString();
}
修改完成后,包括一些属性
public class PlacedMissionDataCommand : IEntityActorMessage
{
public PlacedMissionDataCommand(int trafficzoneId, int missionId, DateTime finishedTime, int taskGroupId, DateTime? taskGroupActivated, DateTime? taskGroupCreated)
{
TrafficzoneId = trafficzoneId;
MissionId = missionId;
FinishedTime = finishedTime;
TaskGroupId = taskGroupId;
TaskGroupActivated = taskGroupActivated;
TaskGroupCreated = taskGroupCreated;
}
public int TrafficzoneId { get; }
public int MissionId { get; private set; }
public DateTime FinishedTime { get; }
public int TaskGroupId { get; }
public DateTime? TaskGroupActivated { get; }
public DateTime? TaskGroupCreated { get; }
public string EntityId => TrafficzoneId.ToString();
}
也许是Akka.NET待办事项列表的项目:如果您不应该使用默认的序列化程序,那么它不应该是默认的:-) – mwardm
不幸的是,这里有2个问题;)1.有在存储永久数据时,没有像默认串行器那样的东西。 2)有些人已经在使用Akka.Persistence进行制作 - 我猜他们不会很高兴,因为在将库升级到更高版本后,他们将无法再读取他们的数据。 – Horusiath
@Horusiath什么意思由版本容忍通过线序列化?如何在hocon配置中启用它。它解决了这个问题吗? https://github.com/akkadotnet/Hyperion#version-tolerance –