我的应用程序需要与大量客户端(安装在用户机器上的java代理)进行双向连续通信,此外它还包括一个spring-mvc Web应用程序,该应用程序提供了一个标准的jsp UI来管理这些代理。我只看了javaakka的基础知识(没有时间为这个项目学习scala)。但这似乎是一个不错的选择来处理大量的客户代理。我看了akka-spring集成模块和akka-s普林g-java示例,在spring方面使用akka似乎很直接。
我认为在客户端代理端使用akka远程处理可能也是一个好主意,可能嵌入另一个应用程序中的代理基本上运行一个线程,需要监视用户jvm中的各种进程,并与服务器上的服务进行通信。使用位置透明度将在概念上简化体系结构,并且可能更高效。
这篇文章表明这可能不是正确的方法
对等与客户端服务器
使用远程处理的另一种选择是使用camel-websocket,它似乎与akka-spring集成模块相关。
考虑到我的应用程序的技术堆栈,在这种情况下,最好的方向是什么?
您可能不想在服务器客户端的情况下使用远程处理。Remoting给予双方相同的权利和特权。它是为集群和对等而设计的。
看看Akka I/O。它为您提供了双方的异步参与者,但更适合服务器-客户端用例。您不必担心线程和进程。
还要记住,即使在Java中使用Akka,也需要Scala库作为依赖项。