gpt4 book ai didi

java - 是否可以使用支持传输的 netty 和 arterr 来运行 akka 系统?

转载 作者:行者123 更新时间:2023-12-02 11:47:47 44 4
gpt4 key购买 nike

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

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

我收到错误:java.lang.IllegalArgumentException: [akka.tcp://akka-2-5@127.0.0.1:2525/user/actor-2-5] 的协议(protocol)错误,预期[ Akka ]

所以,看起来我需要配置我的 Actor 系统以从两个传输系统开始。但我们怎样才能做到这一点呢?我正在寻找一种使用单参与者系统和不同的 akka 传输(netty 或 arterial)发送消息的方法,因为不同的微服务邻居可以使用不同的传输。

最佳答案

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

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

关于java - 是否可以使用支持传输的 netty 和 arterr 来运行 akka 系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48082231/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com