У меня есть приложение, которое запускает систему актера с супервизором, который может получать сообщения через удаленное взаимодействие akka.Сообщения, которые отправляются из удаленной системы акторов, представляют собой классы дел, например:
case class SupervisorStartChannel(channelName: String) extends SupervisorRequest
case class SupervisorShutdown() extends SupervisorRequest
При получении я получаю следующее:
def receive: Actor.Receive = LoggingReceive ({
case SupervisorListChannels =>
listChannels()
case SupervisorReportComponents =>
sender ! loadConfiguredComponents()
case SupervisorStartChannel(channelName) =>
sender ! startChannelByName(channelName)
case SupervisorShutdown =>
log.info("Shutdown received.")
sender ! SupervisorAck
context.system.terminate()
case _ =>
replayError(s"$supervisorName can't process an empty command.")
}: Receive) andThen metered.Receive
Если я отправляю SupervisorShutdown изнутриВ той же системе акторов, где работает супервизор, он вводит правильный регистр, однако при отправке SupervisorShutdown () из удаленной системы он вводит регистр _.При отправке SupervisorStartChannel (channel1) работает отлично.
РЕДАКТИРОВАТЬ: После запуска некоторых тестов я обнаружил, что проблема заключается в сериализации этого case class SupervisorShutdown() extends SupervisorRequest
.Akka использует сериализатор Java по умолчанию для удаленного взаимодействия, и это вызывает его.
Есть идеи, что может быть причиной этого?