Как заставить дерево akka работать с кластером akka.net?

В настоящее время я ищу визуализатор для akka.net (версия.NET). Я не нашел ни одного, поэтому мне интересно, есть ли способ заставить akka-tree (scale) и akka.net кластер работать вместе. Я предполагаю, что если обе платформы следуют той же спецификации, то это должно работать. это?

Я пытался задать этот вопрос в akka-tree, но не получил ответа, поэтому я стараюсь здесь.

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

Я не знаком с масштабом, но я сделал следующие изменения.

Я попытался добавить конфигурацию UDP в моем примере akka.net, потому что я думаю, что этот визуализатор использует 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] Компиляция 1 исходного кода Scala в D:\git\akka-tree\visualizer\target\scala-2.11 \classes... [info] play - Приложение запущено (Dev) [ошибка] приложение -

! Внутренняя ошибка сервера, для (GET) [/] ->

java.lang.ExceptionInInitializerError: null на маршрутах $$ anonfun $ маршруты $1$$anonfun$applyOrElse$1$$anonfun$apply$1.appl y(rout_routing.scala:72) ~[na:na] на маршрутах $$ anonfun $ маршруты $1$$anonfun$applyOrElse$1$$anonfun$apply$1.appl y(rout_routing.scala:72) ~[na:na] в play.core.Router$HandlerInvokerFactory$$anon$13$$anon$14.call(Маршрутизатор. scala:217) ~[play_2.11-2.3.7.jar:2.3.7] на play.core.Router$Routes$TaggingInvoker.call(Router.scala:464) ~[play_ 2.11-2.3.7.jar:2.3.7] at Routes$$anonfun$routs$1$$anonfun$applyOrElse$1.apply(rout_routing. Scala: 72) ~ [na: na] Причина: java.net.SocketException: не является адресом многоадресной рассылки на java.net.MulticastSocket.joinGroup(Неизвестный источник) ~[na:1.8.0_51] в контроллерах. Приложение $.(Application.scala:16) ~[na:na] в контроллерах. Приложение $.(Application.scala) ~[na:na] на маршрутах $$ anonfun $ маршруты $1$$anonfun$applyOrElse$1$$anonfun$apply$1.appl y(rout_routing.scala:72) ~[na:na] на маршрутах $$ anonfun $ маршруты $1$$anonfun$applyOrElse$1$$anonfun$apply$1.appl y(rout_routing.scala:72) ~[na:na] [error] application - Ошибка при отображении страницы ошибки по умолчанию scala.MatchError: java.lang.ExceptionInInitializerError (из класса java.lang.Exce ptionInInitializerError) в классе play.api.GlobalSettings$.onError(GlobalSettings.scala:148) ~[pla y_2.11-2.3.7.jar:2.3.7] в play.api.DefaultGlobal$.onError(GlobalSettings.scala:206) [play_2.11- 2.3.7.jar:2.3.7] на play.core.server.Server$class.logExceptionAndGetResult$1(Server.scala:63) [play_2.11-2.3.7.jar:2.3.7] на play.core.server.Server$$anonfun$getHandlerFor$4.apply(Server.scala:7 3) [play_2.11-2.3.7.jar:2.3.7] на play.core.server.Server $$ anonfun $ getHandlerFor $ 4.apply (сервер. scala: 7 1) [play_2.11-2.3.7.jar: 2.3.7] [error] application -

! Внутренняя ошибка сервера, для (HEAD) [/] ->

java.lang.NoClassDefFoundError: Не удалось инициализировать контроллеры классов. Приложение для $ на маршрутах $$ anonfun $ маршрутов $1$$anonfun$applyOrElse$1$$anonfun$apply$1.appl y(rout_routing.scala: 72) ~ [na: na ] на маршрутах $$ anonfun $ маршрутов $1$$anonfun$applyOrElse$1$$anonfun$apply$1.appl y(rout_routing.scala:72) ~[na:na] на play.core.Router$HandlerInvokerFactory$$anon$13$$anon$14.call(Router. scala:217) ~[play_2.11-2.3.7.jar:2.3.7] на play.core.Router $ Routes $ TaggingInvoker.call (Router.scala: 464) ~ [play_ 2.11-2.3.7.jar: 2.3.7] в Routes $$ anonfun $ routs$1$$anonfun$applyOrElse$1.apply(rout_routing. Scala: 72) ~ [na: na] [error] application - ошибка при отображении по умолчанию страница ошибки scala.MatchError: java.lang.NoClassDefFoundError: Не удалось инициализировать троллеры класса con.Application$ (класса java.lang.NoClassDefFoundError) в play.api.GlobalSettings$class.onError(GlobalSettings.scala:148) y_2.11-2.3.7.jar: 2.3.7] в play.api.DefaultGlobal$.onError(GlobalSettings.scala:206) [play_2.11- 2.3.7.jar:2.3.7] в play.core.server.Server$class.logExceptionAndGetResult$1(Server.scala:63) [play_2.11-2.3.7.jar:2.3.7] в play.core.server.Server$$anonfun$getHandlerFor$4.apply(Server.scala:7 3) [play_2.11-2.3.7.jar:2.3.7] на play.core.server.Server$$anonfun$getHandlerFor$4.apply(Server.scala:7 1) [play_2.11-2.3.7.jar:2.3.7]

2 ответа

Решение

Проблема в том, что вы пытаетесь охватить кластер как реализациями.NET, так и JVM akka. Они не совместимы друг с другом на данный момент. Причиной этого являются некоторые различия в транспортном уровне сокетов.NET/JVM (например, порядок байтов с младшим и старшим порядком байтов), а также проблемы с сериализацией сообщений (JVM использует встроенный JavaSerializer, .NET по умолчанию использует JSON.NET).

Вероятно, есть и другие незначительные проблемы, но вывод заключается в том, что в настоящее время вы не можете объединить кластер akka между узлами.NET и JVM.

Я не автор, но есть "очень очень альфа-версия" визуализатора, портированного на.NET (с августа '16), доступная на nuget https://www.nuget.org/profiles/corneliutusnea с источником здесь https://github.com/corneliutusnea/Akka.Visualizer

Другие вопросы по тегам