#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 — Я добавил немного кода и немного расширил вопрос. Спасибо, что посмотрели!