【问题标题】:How to serialize an akka "actorRef" that is part of a case class using JsonFormat custom serializer from spray-json?如何使用来自spray-json的JsonFormat自定义序列化程序序列化属于案例类的akka​​“actorRef”?
【发布时间】:2020-09-04 02:48:55
【问题描述】:

我需要为一个看起来像这样的案例类创建一个 spray-json 隐式转换:

case class ExampleCaseClass(identified: String, actor: ActorRef)

我一直在使用 spray-json 进行所有序列化,但我没有看到任何在线解释如何为 ActorRef 类型创建 JsonFormat 隐式转换的地方。

如果有人能帮助我解决这个问题,我将不胜感激,甚至只是指出我可能找到答案的方向。

非常感谢。

【问题讨论】:

  • 你能解释一下你为什么要这样做吗? ActorRef 仅在单个 ActorSystem 实例中有意义,因此将其持久化或将其发送到其他程序将没有用。
  • 您将无法序列化 ActorRef 类型。相反,我会序列化演员路径,您可以从中获取演员参考。
  • 首先,感谢你们这么快回复我!@Tim 我在一个共享一个 ActorSystem 的 akka 集群中有多个系统,所以我打算在什么时候使用这个 actor 参考我需要传递对同一 ActorSystem 中的一个演员的引用,以便我可以向它发送消息。 @EmiCareOfCell44,你是说根本不可能序列化 ActorRef 类型,我所能做的就是拥有一个包含两个字符串的案例类,而以前是 ActorRef 的那个现在只是一个包含actorRef 的路径?
  • Akka 提供了一个 JSON 序列化器作为 akka-serialization-jackson 模块的一部分。如果你想改用spray-json,那可能也可以,你可以以github.com/akka/akka/blob/…为例,说明如何进行序列化和反序列化。 (它可能会使用一些内部结构)

标签: scala serialization akka implicit-conversion spray-json


【解决方案1】:

根据this documentation,这对 Jackson 来说是开箱即用的,但您需要为 Spray 编写自定义序列化程序。

【讨论】:

    猜你喜欢
    • 2020-04-20
    • 2013-09-04
    • 2023-03-10
    • 1970-01-01
    • 2015-08-05
    • 1970-01-01
    • 1970-01-01
    • 2022-09-23
    • 2021-09-21
    相关资源
    最近更新 更多