java - 如何更改 Akka 应用程序的默认序列化程序?

标签 java scala serialization akka kryo

我看了akka连载page ,他们将 serialization-bindings 称为

serialization-bindings {
      "java.lang.String" = java
      "docs.serialization.Customer" = java
      "com.google.protobuf.Message" = proto
      "docs.serialization.MyOwnSerializable" = myown
      "java.lang.Boolean" = myown
    }

我正在考虑使用 kyro序列化并想知道是否有一种方法可以默认为完整的应用程序打开 kyro 序列化?而不是给每个类或包名称?

有点像

serialization-bindings {
     default = kyro
}

最佳答案

是这样的,我用的是kryo:

serializers {
  kryo = "com.romix.akka.serialization.kryo.KryoSerializer"
}

serialization-bindings {
  "com.ex.es.Msg" = kryo
  "java.io.Serializable" = none
}

类似于 Kunal 我所有的消息,我通过网络发送/存储/序列化以任何方式扩展 Msg 类。这不仅是因为我不确定是否有办法设置默认序列化程序,而且还不确定我的应用程序中序列化了什么。

现在试一试您的实际问题:

我还必须设置 "java.io.Serializable"= none 否则我会收到警告,它不确定为我的类选择哪个序列化程序。

所以这可能意味着,默认情况下 case 类扩展 Serializable 并使类似这样的东西作为默认设置工作:

serializers {
  kryo = "com.romix.akka.serialization.kryo.KryoSerializer"
}

serialization-bindings {
  "java.io.Serializable" = kryo
}

但这只是一个有根据的猜测,目前我无法进行测试。

关于java - 如何更改 Akka 应用程序的默认序列化程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38165886/

相关文章:

java - Hibernate - org.hibernate.hql.internal.ast.QuerySyntaxException : Client is not mapped

scala - 在延续中推断结果类型

c++ - 在 VC++ 2010 项目中使用 Boost 序列化库

java - 当您从操作中抛出异常时,Spring 状态机会抛出 NullPointerException

java - 在 netbeans 中从 GUI 表单之外的类调用方法

scala - 凿子 "Enum(UInt(), 5)"失败

scala - 防止 Scalatra 转义 html 页面中的文本

c - 串行通信重置/etc/profile (linux)

c# - 序列化是否最适合通过套接字发送数据?

java - ant 脚本中无法识别环境变量