2015-06-06 7 views
6

Mam frontend aplikacji, zaimplementowany na angularjs + nodejs + express + socket.io. Istnieje również funkcja w osobnej usłudze. Ta usługa jest napisana na akka.Jaki jest najlepszy sposób pracy z akka od nodejs

Oto sposób jak cała komunikacja rurociąg może wyglądać:

[użytkownik wprowadzi wartość] ->[angularjs pobiera wartość i wysłać go do nodejs serwera thru socket.io] ->[nodejs odbiera wartość i przekazuje ją do akka] ->[akka wykonuje pewne obliczenia i zwraca odpowiedź] ->[nodejs odbiera odpowiedź i przekazuje ją do angularapp].

Jednym z możliwych rozwiązań byłoby wprowadzenie oprogramowania pośredniego MQ i wykorzystanie go do interakcji, ale takie "podejście sterowane komunikatami" wydaje się być obciążeniem dla czegoś, co wyraźnie wygląda na wywołanie RPC. Jaki jest najlepszy sposób na budowanie tego rodzaju komunikacji między nodejs i akka?

+0

http://stackoverflow.com/questions/4729013/can-i-call-java-from-node-js-via-jni-how może pomóc –

+0

Możesz użyć edge.js i akka.net –

+0

Nie rozumiem, o co pytasz. Jeśli wiadomości pochodzą od klienta za pośrednictwem socket.io, to po prostu zdefiniujesz procedury obsługi komunikatów w swoim kodzie socket.io po stronie serwera, który następnie wywoła odpowiednią usługę akka za każdym razem, gdy odbierana jest wiadomość przeznaczona dla tej usługi. Jest to metoda zgodna z architekturą, którą najwyraźniej wybrałeś. Oczywiście, nic nie mówi, że musisz to robić poprzez nodejs, jeśli tak naprawdę nie odgrywa to żadnej roli w tych danych. Przeglądarka może komunikować się bezpośrednio przez socket.io lub ajax do twojej usługi przez inny port. – jfriend00

Odpowiedz

6

Od Akka speaks HTTP sam możesz wywołać RESTful z Węzła do usługi Akka. Pipelining jest obsługiwany, dzięki czemu możesz zrobić to bardzo wydajnie. W przepływie serwera HTTP Akka używasz wzorca zapytań, aby uzyskać obliczoną wartość od swojego aktora.

+0

Brzmi jak świetny pomysł. Dziękuję – theocat

+0

Witaj Rolandzie. Co masz na myśli przez potokowanie? Czy to rozwiązanie nie ma kary za wydajność w przygotowywaniu/eliminowaniu żądania http? Dzięki! – naaka

4

Najczystszym sposobem jest pominięcie warstwy wiadomości i użycie zamiast tego internetowych gniazd ponad spray.io. Typesafe ma szablonu aktywator dla właśnie scenariusza WebSocket do Akka aktorów: Spray and Websocket interfaces to actors

przeciwnym razie byłyby patrząc na jakąś RPC middleware, być może Thrift lub ZeroMQ.