Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Serialization 未调用akka.net持久性自定义序列化程序_Serialization_Akka.net_Akka Persistence - Fatal编程技术网

Serialization 未调用akka.net持久性自定义序列化程序

Serialization 未调用akka.net持久性自定义序列化程序,serialization,akka.net,akka-persistence,Serialization,Akka.net,Akka Persistence,我正在研究Akka.net持久性,并使用MongoDb作为持久性存储。我们持久化的事件的属性之一是自定义结构类型“Rational”。我们已经为此Rational类型配置了一个自定义序列化程序,它将Rational类型值序列化为十进制值。但是,我们根本看不到调用自定义序列化程序。MongoDb显示新插入的文档,其rational值的类型为object,而不是decimal 下面是akka.hocon配置 akka { actor { serializers { my-ra

我正在研究Akka.net持久性,并使用MongoDb作为持久性存储。我们持久化的事件的属性之一是自定义结构类型“Rational”。我们已经为此Rational类型配置了一个自定义序列化程序,它将Rational类型值序列化为十进制值。但是,我们根本看不到调用自定义序列化程序。MongoDb显示新插入的文档,其rational值的类型为object,而不是decimal

下面是akka.hocon配置

akka {
  actor {
    serializers {
      my-rational = "RationalTypePersistence.RationalSerializer, RationalTypePersistence"
    }
    serialization-bindings {
      "RationalTypePersistence.Rational, RationalTypePersistence" = "my-rational"
    }
  }
}
在调试会话中,自定义序列化程序的“ToBinary”和“fromBinary”方法中设置的断点也不会被命中。但构造函数中的断点会多次命中

自定义序列化程序正在扩展Akka.Serialization.serializer,并已将标识符从二进制重写为二进制属性/方法


我们是否缺少任何配置?

能否显示调用
Persist
方法的持久参与者的一些代码?可能它没有保存与此注册类型相同的事件?Mongodb有一个密钥名为“存储为”的akka配置。我相信,它决定了存储格式。如果其值为“binary”,则只调用akka序列化程序。此配置不是必需的,其默认值为“Object”。当它是“Object”时,akka不从它的侧面应用任何序列化,它只是将对象传递给数据存储驱动程序,然后数据存储驱动程序根据需要序列化传递的对象。这就是为什么我没有看到我的akka序列化程序在“Persist”调用中被调用的原因。我最终为我的类型添加了BsonSerializer(因为它是Mongodb),它工作了。