Сообщения протобуфера 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 вместо.

Другие вопросы по тегам