代码之家  ›  专栏  ›  技术社区  ›  Silk0vsky

akka系统是否可以同时使用运输启用的网络和动脉?

  •  0
  • Silk0vsky  · 技术社区  · 8 年前

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

    当我尝试在系统B上创建一个演员参考时,如下所示: 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系统,以从两个传输系统开始。但我们如何才能做到这一点? 我正在寻找一种使用单参与者系统和不同akka传输(netty或artery)发送消息的方法,因为不同的微服务邻居可以使用不同的传输。

    1 回复  |  直到 8 年前
        1
  •  1
  •   johanandren    8 年前

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

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