如何使 akka-tree 与 akka.net 集群一起工作?

How to make akka-tree work with akka.net cluster?

我目前正在寻找 akka.net(.NET 版本)的可视化工具。我发现 none 所以我想知道是否有任何方法可以使 akka-tree (scale) 和 akka.net 集群一起工作。我想如果两个框架都遵循相同的规范,那么它应该可以工作。是吗?

我试过在 akka-tree 中问这个问题但没有回应所以我在这里试试运气。

https://github.com/nraychaudhuri/akka-tree/issues/15

我不熟悉缩放,但我做了以下更改。

我尝试在我的 akka.net 示例中添加 UDP 配置,因为我认为这个可视化工具正在使用 UDP。

        helios.udp {
              port = 9003 # needs to be on a different port or IP than TCP
              hostname = localhost
          }

然后,我尝试更改此文件中的 IP 地址 akka-tree\visualizer\app\controllers\Application.scala

            val group = InetAddress.getByName("127.0.0.1"); 

但是,不起作用..知道如何让它起作用吗?谢谢!

更新:

我尝试使用 TCP 但不起作用。

当我访问网页 "localhost:90000" 时出现以下异常。我对 Scale 不熟悉,但我认为它与 scale 安装有关。我确实在我的机器上安装了 scale 和 java ..

[info] Compiling 1 Scala source to D:\git\akka-tree\visualizer\target\scala-2.11 \classes... [info] play - Application started (Dev) [error] application -

! Internal server error, for (GET) [/] ->

java.lang.ExceptionInInitializerError: null at Routes$$anonfun$routes$$anonfun$applyOrElse$$anonfun$apply.appl y(routes_routing.scala:72) ~[na:na] at Routes$$anonfun$routes$$anonfun$applyOrElse$$anonfun$apply.appl y(routes_routing.scala:72) ~[na:na] at play.core.Router$HandlerInvokerFactory$$anon$$anon.call(Router. scala:217) ~[play_2.11-2.3.7.jar:2.3.7] at play.core.Router$Routes$TaggingInvoker.call(Router.scala:464) ~[play_ 2.11-2.3.7.jar:2.3.7] at Routes$$anonfun$routes$$anonfun$applyOrElse.apply(routes_routing. scala:72) ~[na:na] Caused by: java.net.SocketException: Not a multicast address at java.net.MulticastSocket.joinGroup(Unknown Source) ~[na:1.8.0_51] at controllers.Application$.(Application.scala:16) ~[na:na] at controllers.Application$.(Application.scala) ~[na:na] at Routes$$anonfun$routes$$anonfun$applyOrElse$$anonfun$apply.appl y(routes_routing.scala:72) ~[na:na] at Routes$$anonfun$routes$$anonfun$applyOrElse$$anonfun$apply.appl y(routes_routing.scala:72) ~[na:na] [error] application - Error while rendering default error page scala.MatchError: java.lang.ExceptionInInitializerError (of class java.lang.Exce ptionInInitializerError) at play.api.GlobalSettings$class.onError(GlobalSettings.scala:148) ~[pla y_2.11-2.3.7.jar:2.3.7] at play.api.DefaultGlobal$.onError(GlobalSettings.scala:206) [play_2.11- 2.3.7.jar:2.3.7] at play.core.server.Server$class.logExceptionAndGetResult(Server.scala :63) [play_2.11-2.3.7.jar:2.3.7] at play.core.server.Server$$anonfun$getHandlerFor.apply(Server.scala:7 3) [play_2.11-2.3.7.jar:2.3.7] at play.core.server.Server$$anonfun$getHandlerFor.apply(Server.scala:7 1) [play_2.11-2.3.7.jar:2.3.7] [error] application -

! Internal server error, for (HEAD) [/] ->

java.lang.NoClassDefFoundError: Could not initialize class controllers.Applicati on$ at Routes$$anonfun$routes$$anonfun$applyOrElse$$anonfun$apply.appl y(routes_routing.scala:72) ~[na:na] at Routes$$anonfun$routes$$anonfun$applyOrElse$$anonfun$apply.appl y(routes_routing.scala:72) ~[na:na] at play.core.Router$HandlerInvokerFactory$$anon$$anon.call(Router. scala:217) ~[play_2.11-2.3.7.jar:2.3.7] at play.core.Router$Routes$TaggingInvoker.call(Router.scala:464) ~[play_ 2.11-2.3.7.jar:2.3.7] at Routes$$anonfun$routes$$anonfun$applyOrElse.apply(routes_routing. scala:72) ~[na:na] [error] application - Error while rendering default error page scala.MatchError: java.lang.NoClassDefFoundError: Could not initialize class con trollers.Application$ (of class java.lang.NoClassDefFoundError) at play.api.GlobalSettings$class.onError(GlobalSettings.scala:148) ~[pla y_2.11-2.3.7.jar:2.3.7] at play.api.DefaultGlobal$.onError(GlobalSettings.scala:206) [play_2.11- 2.3.7.jar:2.3.7] at play.core.server.Server$class.logExceptionAndGetResult(Server.scala :63) [play_2.11-2.3.7.jar:2.3.7] at play.core.server.Server$$anonfun$getHandlerFor.apply(Server.scala:7 3) [play_2.11-2.3.7.jar:2.3.7] at play.core.server.Server$$anonfun$getHandlerFor.apply(Server.scala:7 1) [play_2.11-2.3.7.jar:2.3.7]

问题在于,您正试图将集群跨越 .NET 和 JVM akka 实现。他们目前彼此不兼容。原因是 .NET/JVM 套接字传输层(如小字节序和大字节序字节顺序)的一些差异以及消息序列化的问题(JVM 使用内置的 JavaSerializer,.NET 使用 JSON.NET默认)。

可能还有其他一些小问题,但结论是,目前您无法在 .NET 和 JVM 节点之间组合 akka 集群。

我不是作者,但在 nuget https://www.nuget.org/profiles/corneliutusnea 上有一个 'very very alpha version' 移植到 .NET(从 2016 年 8 月开始)的可视化工具 来源在这里 https://github.com/corneliutusnea/Akka.Visualizer