轮询服务器替代Java客户端中的数据?

时间:2012-06-22 01:37:27

标签: java http cakephp asynchronous

我的Java应用程序需要从服务器获取数据(在nginx上运行CakePHP)。是否有另一种方法可以在不轮询服务器的情况下获取数据?目前,我每隔X秒使用持久HTTP连接和轮询服务器,以查看是否有任何数据可用。

如果是网络浏览器,我可以使用网络套接字。我们在Java中有哪些选择?

3 个答案:

答案 0 :(得分:0)

您的应用程序中的数据是否经常更改?如果是这样,轮询可能是获得更新的最佳和最简单的方式。

如果没有,您将必须自己构建Web套接字功能 - 在Java客户端中有一个“服务器”来侦听某个端口。当您提交请求时,让CakePHP对其进行记录,并拥有一个cron作业或类似工具,以便在更新时向您发送数据。

如果您在防火墙/ NAT后面,这将很难工作。您可以尝试一下,但我认为轮询HTTP服务器将是最简单的。

答案 1 :(得分:0)

如果您可以实现某种类型的Java Messaging System(JMS),如ActiveMQ,RabbitMQ,WebsphereMQ等,那么您可以监听发布到客户端的消息。当然,您的Java应用程序仍然可以有效地轮询消息,但性能会比HTTP请求好得多。

Spring框架提供了一些优秀的JMS实现抽象,因此您不必担心管道。您可以使用简单的JmsTemplate或使用Spring Integration作为两个选项

答案 2 :(得分:0)

WebSphereMQ的遥测功能允许MQTT客户端连接到MQTT通道。在服务器上运行的MQTT应用程序可以在数据更改时发布数据,并且数据将被推送到已订阅相应主题的远程JMS或MQTT客户端。不涉及投票。