мы пытаемся использовать protobuf с Akka и сериализовать все сообщения Akka через protobuf.Для Scala у нас есть библиотека ScalaPB, которая помогает нам генерировать класс, который включает методы типа parseFrom
, toByteArray
и т. Д. Для сериализации или десериализации наших данных.Но, пока мы пытаемся запустить программу, получаем следующее исключение:
akka.actor.dungeon.SerializationCheckFailedException: Failed to serialize and deserialize message of type com.knoldus.akkaserialization.msg.example.Bang$ for testing. To avoid this error, either disable 'akka.actor.serialize-messages', mark the message with 'akka.actor.NoSerializationVerificationNeeded', or configure serialization to support this message
Файл application.conf содержит следующую конфигурацию:
akka {
actor {
allow-java-serialization = off
serialize-messages = on
serializers {
proto = "akka.remote.serialization.ProtobufSerializer"
}
serialization-bindings {
"com.knoldus.akkaserialization.msg.example.Bang" = proto
"com.knoldus.akkaserialization.msg.example.Message" = proto
}
}
}
Эти классы com.knoldus.akkaserialization.msg.example.Bang
и com.knoldus.akkaserialization.msg.example.Message
генерируютчерез ScalaPB и содержит все необходимые методы.
Исходный код akka.remote.serialization.ProtobufSerializer
define,
This Serializer serializes `akka.protobuf.Message` and `com.google.protobuf.Message` It is using reflection to find the `parseFrom` and `toByteArray` methods to avoid dependency to `com.google.protobuf`
Итак, мы ожидаем, что это автоматически считывает наши классы дел Bang
и Message
и выполняет сериализацию, но, к сожалению, получает исключение сериализации,
Не могли бы вы выяснить, в чем конкретно проблема с ScalaPB и ProtoBuff?