我正在关注akka-in-action代码库远程处理(https://github.com/RayRoestenburg/akka-in-action/tree/master/chapter-remoting)。在该示例中,它解释了使用发送方actor和接收方actor进行远程处理。两个actor都是单独启动的(通过单独的Main),并且它们能够按照解释进行通信(注意: - 两个actor都是相同代码库的一部分)。
我想看看如果发送方actor是不同项目(独立代码库)的一部分,它的行为方式。我创建了一个Play网络应用程序,通过一些休息客户端(我使用Postman)接到POST电话后,向上述接收方演员发送消息。
我观察到的是,即使发送的消息(案例类)在发送者和接收者代码库中都可用,接收者也会抱怨一个类未找到错误(它无法理解我的Case类对象)发件人发送)
这是一种预期的行为,如果远程处理必须工作,分布式actor应该共享相同的代码库吗?
答案 0 :(得分:1)
移动到Kryo / Chill将部分解决您的问题,只要您在下面使用相同的Akka版本。这些二进制序列化格式本质上是脆弱的。 Avro在解决二进制序列化的生命周期问题方面做得更好;但是,我从来没有见过Avro用于Akka的序列化。