是否可以运行带有运输网络和动脉的akka​​系统?

时间:2018-01-03 17:26:28

标签: java scala akka

是否可以运行两个具有不同传输(netty / artery)的应用程序并使它们相互通信? 例如: 如果系统A正在侦听tcp端口(netty)而系统B正在侦听udp端口(动脉),我们可以将消息从B发送到A吗?

当我尝试在系统B上创建一个actor ref时,如下所示: system.actorFor("akka.tcp://akka-2-5@127.0.0.1:2525/user/actor-2-5")

我收到错误:java.lang.IllegalArgumentException: Wrong protocol of [akka.tcp://akka-2-5@127.0.0.1:2525/user/actor-2-5], expected [akka]

所以,看起来我需要配置我的actor系统以从两个传输系统开始。但是我们怎么做呢? 我正在寻找一种方法来发送带有单个actor系统和不同akka传输(netty或动脉)的消息,因为不同的微服务邻居可以使用不同的传输。

1 个答案:

答案 0 :(得分:1)

您无法在同一ActorSystem中同时启用动态和传统远程处理。我能想到的唯一解决方法是有两个actor系统,一个用动脉运行远程处理,另一个用传统远程处理(这可以在同一个JVM中完成)。

请注意,一般来说,Akka远程处理不是一个非常好的微服务通信协议,因为它可以将单独的微服务绑定到相同的Akka,库和应用程序类的二进制版本,并强制您进行锁定步骤升级(请参阅此Ben Christensen谈了更多:https://www.microservices.com/talks/dont-build-a-distributed-monolith/)。