Сериализация в Scala / Akka

#scala #serialization #akka

#scala #сериализация #akka

Вопрос:

Я пишу распределенное приложение на Scala, которое использует актеров Akka. У меня есть некоторые структуры данных, которые мои удаленные участники с радостью сериализуют, отправляют по проводам и отменяют сериализацию без какой-либо дополнительной помощи с моей стороны.

Для ведения журнала я хотел бы сериализовать класс case, содержащий эти объекты. Я прочитал документы по сериализации на сайте проекта akka, но мне интересно, есть ли более простой способ сделать это, поскольку Akka, по-видимому, уже знает, как сериализовать эти объекты.


Редактировать 5 ноября 2011 в ответ на комментарий Виктора

Приложение представляет собой распределенный механизм принятия решений Маркова.

Я пытаюсь сериализовать одну из этих вещей:

 case class POMDPIteration(
  observations: Set[(AgentRef, State)],
  rewards: Set[(AgentRef, Float)],
  actions: Set[(AgentRef, Action)],
  state: State
)
  

вот определение AgentRef:

 case class AgentRef(
  clientManagerID: Int,
  agentNumber: Int,
  agentType: AgentType
)
  

Action и AgentType — это просто псевдонимы типов Symbol

Чтобы сделать это короче, определение состояния приведено здесь:https://github.com/ConnorDoyle/EnMAS/blob/master/src/main/scala/org/enmas/pomdp/State.scala

Я успешно отправляю классы case, содержащие объект типа State, среди удаленных участников без проблем. Мне просто интересно, есть ли способ получить доступ к процедурам сериализации, которые Akka использует для моих собственных целей.

Неявная сериализация Akka при передаче сообщений проста, но из документов следует, что явно запрашивать у Akka сериализованную версию сложно. Возможно, я неправильно понял документацию или упустил что-то важное.

Комментарии:

1. У вас есть какой-нибудь пример кода, чтобы проиллюстрировать проблему?

2. @ViktorKlang — Я добавил немного кода и немного расширил вопрос. Спасибо, что посмотрели!

Ответ №1: