Akka remoting akka远程参与者-发送方和接收方参与者必须在同一个项目上吗?

Akka remoting akka远程参与者-发送方和接收方参与者必须在同一个项目上吗?,akka-remoting,Akka Remoting,我一直在关注akka的实际代码库远程处理()。在本例中,它解释了使用发送方参与者和接收方参与者进行远程处理。两个参与者分别启动(通过单独的Main),并且能够按照说明进行通信(注意:-两个参与者都是同一代码库的一部分) 我想看看如果发送方参与者是另一个项目(独立代码库)的一部分,它的行为如何。我创建了一个PlayWeb应用程序,当通过某个rest客户端(我使用了Postman)接到POST呼叫时,它会向上述接收者发送一条消息 我观察到的是,即使发送的消息(Case类)在发送方和接收方代码库中都可

我一直在关注akka的实际代码库远程处理()。在本例中,它解释了使用发送方参与者和接收方参与者进行远程处理。两个参与者分别启动(通过单独的Main),并且能够按照说明进行通信(注意:-两个参与者都是同一代码库的一部分)

我想看看如果发送方参与者是另一个项目(独立代码库)的一部分,它的行为如何。我创建了一个PlayWeb应用程序,当通过某个rest客户端(我使用了Postman)接到POST呼叫时,它会向上述接收者发送一条消息

我观察到的是,即使发送的消息(Case类)在发送方和接收方代码库中都可用,接收方也会抱怨类未找到错误(它无法理解我从发送方发送的Case类对象)


如果远程处理必须工作,分布式参与者应该共享相同的代码库,这是一种预期行为吗?

移动到Kryo/Chill将部分解决您的问题,只要您在下面使用相同版本的Akka。这些二进制序列化格式本质上是脆弱的。Avro在解决二进制序列化的生命周期问题方面做得更好;但遗憾的是,我从未见过Avro在Akka中被用作序列化。

我从Ray那里得到一个更新,如果代码库不同,正常的java序列化就不够了。我们需要使用一些其他序列化(例如:Kryo或Chill)问题:您的Case对象是否可能以某种方式位于第三个(单个)代码库(库)中?我的意思是,无论如何,你必须定义它们一次。也许仅仅将该库导入项目的两端就能更优雅地解决问题?这是一个好主意,但不确定这是否可行,让我们看看是否有人能对此有所启发