2015-06-06 15 views
6

Tôi có giao diện người dùng ứng dụng, được triển khai trên angularjs + nodejs + express + socket.io. Ngoài ra còn có một tính năng trong một dịch vụ riêng biệt. Dịch vụ này được viết trên akka.Cách tốt nhất để làm việc với akka từ nodejs

Đây là cách của toàn bộ đường ống truyền thông có thể trông như thế nào:

[người dùng nhập vào một giá trị] ->[angularjs được giá trị và gửi nó tới máy chủ nodejs thru socket.io] ->[nodejs nhận giá trị và kênh nó thành akka] ->[akka thực hiện một số phép tính và trả về một phản hồi] ->[nodejs nhận phản hồi và chuyển nó tới angularapp].

Một giải pháp có thể là giới thiệu một phần mềm trung gian MQ và sử dụng nó cho tương tác, nhưng cách tiếp cận "thông điệp hướng" này có vẻ như một chi phí cho một cái gì đó rõ ràng trông giống như một cuộc gọi RPC. Cách tốt nhất để xây dựng kiểu giao tiếp như vậy giữa nodejs và akka là gì?

+0

http://stackoverflow.com/questions/4729013/can-i-call-java-from-node-js-via-jni-and-how có thể giúp –

+0

Bạn có thể sử dụng edge.js và akka.net mặc dù –

+0

Tôi không hiểu bạn đang hỏi gì. Nếu các thông điệp đến từ máy khách thông qua socket.io, thì bạn chỉ cần định nghĩa các trình xử lý tin nhắn trong mã socket.io phía máy chủ của bạn, sau đó gọi dịch vụ akka của bạn một cách thích hợp bất cứ khi nào một thông điệp được đặt cho dịch vụ đó được nhận. Đó là phương pháp phù hợp với kiến ​​trúc mà bạn dường như đã chọn. Tất nhiên, không có gì nói rằng bạn phải làm điều này thông qua nodejs nếu nó không thực sự đóng một vai trò trong dữ liệu này cả. Trình duyệt có thể giao tiếp trực tiếp thông qua socket.io hoặc ajax đến dịch vụ của bạn qua một cổng khác. – jfriend00

Trả lời

6

Vì bản thân bạn chỉ có thể thực hiện cuộc gọi RESTful từ nút Node đến dịch vụ Akka từ Akka speaks HTTP. Pipelining được hỗ trợ để bạn có thể thực hiện điều này rất hiệu quả. Trong luồng máy chủ HTTP Akka, bạn sử dụng mẫu yêu cầu để lấy lại giá trị được tính toán từ tác nhân của bạn.

+0

Âm thanh là một ý tưởng tuyệt vời. Cảm ơn bạn – theocat

+0

Xin chào Roland. Ý bạn là gì khi pipelining? Không giải pháp này có một hình phạt hiệu suất cho marshalling/unmarshalling yêu cầu http? Cảm ơn! – naaka

4

Cách gọn gàng nhất là bỏ qua node.js/socket.io cho lớp nhắn tin và thay vào đó sử dụng websockets trực tiếp trên spray.io. Typesafe có một mẫu activator cho chỉ là kịch bản của WebSockets để AKKA diễn viên: Spray and Websocket interfaces to actors

Nếu không, bạn sẽ được xem xét một số loại middleware RPC, có lẽ Thrift hoặc ZeroMQ.

Các vấn đề liên quan