Я провел два дня, пытаясь отладить проблему, когда сообщение не обрабатывалось актером, в конечном счете, чтобы узнать, что отправленное ему сообщение не имеет круглых скобок, следующих за его именем. Если классы Score без аргументов без круглых скобок устарели в Scala, почему Akka все же позволяет отправлять их без предупреждения?Если классы классов без аргументов без круглых скобок устарели в Scala, почему Akka все еще разрешает их передавать?
ответ
Я предполагаю, что проблема здесь не в том, что объект-компаньон не является Serializable. В любом случае вы получите предупреждение - и исключение, если вы используете удаленный akka. Вероятно, проблема заключалась в том, что функция приема в получающем акторе не имеет случая для объекта-компаньона.
Akka просто не интересует, какие сообщения вы отправляете, поскольку вы можете отправить любой объект в виде сообщения. Мне не имеет смысла проверять, чтобы вы не отправляли устаревший класс.
Я использовал прокси для RabbitMQ вместо удаленных Akka, которые маскировали сериализуемую проблему. Это объясняет, почему я не видел исключения. Благодаря! – doctorless
Я предполагаю, что здесь, но похоже, что вы отправляли, был сопутствующий объект класса case, а не сам класс case. Класс case был бы сериализуем по умолчанию (все классы классов сериализуемы, если они построены из сериализуемых компонентов), но спутник не гарантируется сериализуемым.
Класс без параметров - это действительно «случайный объект» –