Сообщения протобуфера Scala, использующие неверный сериализатор с Akka Remoting
Я пытался заставить сообщения Scala Protobuf работать с сериализатором Akka protobuf, но получаю этот ответ, когда отправляю сообщения через удаленное взаимодействие.
Using the default Java serializer for class [au.com.bluereef.sonar.gui.protocol.auth.AuthenticationResponse] which is not recommended because of performance implications. Use another serializer or disable this warning using the setting 'akka.actor.warn-about-java-serializer-usage'
В конфиге приложения у меня есть эта настройка
akka {
log-dead-letters = off
log-dead-letters-during-shutdown = off
actor {
provider = "akka.remote.RemoteActorRefProvider"
serializers {
java = "akka.serialization.JavaSerializer"
proto = "akka.remote.serialization.ProtobufSerializer"
}
serialization-bindings {
"java.lang.String" = java
"com.google.protobuf.Message" = proto
}
}
remote {
enabled-transports = ["akka.remote.netty.tcp"]
netty.tcp {
hostname = "127.0.0.1"
port = 8123
}
}
}
Сообщения скомпилированы в отдельный проект с файлами прото src/main/protobuf
и скомпилированы с sbt и ScalaPB ("com.trueaccord.scalapb" % "sbt-scalapb" % "0.4.20"
) плагин.
import com.trueaccord.scalapb.{ScalaPbPlugin => PB}
name := "protocol"
version := Process("git describe --tags --abbrev=5", baseDirectory.value).!!.replace("\n", "")
organization := "au.com.bluereef.sonar.gui"
scalaVersion := "2.11.7"
libraryDependencies ++= Seq(
"com.typesafe.slick" %% "slick" % "3.1.1",
"org.postgresql" % "postgresql" % "9.4.1208"
)
PB.protobufSettings
PB.javaConversions in PB.protobufConfig := true
PB.runProtoc in PB.protobufConfig := (args =>
com.github.os72.protocjar.Protoc.runProtoc("-v300" +: args.toArray))
Есть какие-нибудь подсказки?
1 ответ
Решение
Сообщения, созданные с помощью scalapb, не расширяются com.google.protobuf.Message
попробуйте использовать com.trueaccord.scalapb.GeneratedMessage
вместо.