我正在寻找一个带有 Java EE 的全双工流解决方案。
情况:客户端应用程序 (JavaFX) 从外围设备读取数据。这些数据需要近乎实时地传输到服务器进行处理,并且还需要异步返回响应,同时不断发送新数据进行处理。
与服务器的通信需要有尽可能低的开销。传入的数据基本上是一些传感器数据,经过处理后,它们被转入可以描述为一组命令的内容。
我调查的内容:
- TCP/IP 服务器(这是一种非 Java EE 方法)。这将是显而易见的解决方案。从每个客户端应用程序并行打开两个连接:一个用于上游数据,一个用于下游数据。
- 远程和无状态 EJB。这意味着不涉及流式传输,并且我将传感器数据打包在较小的窗口中(价值 1-2 秒的传感器数据),然后我将其发送到服务器进行处理并获取处理结果作为响应。对于这种方法,虽然它是可扩展的,但考虑到我必须每 1-2 秒发出一个请求,我不确定它的速度有多快。我仍然需要对此进行测试,但我对此表示怀疑。
- RMI。从技术上讲,这与 EJB 有什么不同吗?
- 两个带有长轮询的 servlet(上/下)。我以前没有这样做过,所以有待测试。
现在我想测试我的方法 #2 的性能。第一个解决方案肯定会起作用,但我不太喜欢拥有一个单独的服务器(在 Tomcat 旁边,我已经在其中运行了一些东西)。
但是,与此同时,值得了解是否有任何其他 Java 特定(EE 或非 EE)技术可以轻松解决这个问题。如果有人有想法,请分享。