Web Socket与JMS或Activemq的区别

14
我想知道Java Web socket和JMS(或ActiveMq)之间的区别是什么?请告诉我是否有任何比较WebSocket和JMS以及何时使用WebSocket和何时不使用,以及何时使用Activemq而不是WebSocket的来源。 Activemq是JMS的实现。可能会使用Web socket进行传输消息(具有任何类型的数据),那么如果使用Web socket而不是Activemq来传输消息呢?这可能取决于应用程序类型和要求,然而作为一般性原则并使我容易做出决策,让我听听你的想法(我想在两个Web应用程序之间发送简单,快速且轻量级的消息)。 投票关闭的人: 请考虑帮助他人获得帮助和知识,而不是避免它。

“Web应用程序”通常指运行在Web服务器上的应用程序。当涉及到浏览器时,Websockets才真正适用。除非你所说的“Web应用程序”是指“浏览器应用程序”? - Warren Dew
@WarrenDew。感谢您的关注和支持。我的应用程序都是基于Web的,没有涉及到浏览器。所有通信都是在服务器上运行的Web应用程序之间进行的,完全不涉及浏览器。您的意思是,只有当浏览器(网页、JSP、HTML、JS)与服务器Web应用程序通信时才使用套接字?如果是这样,WebSocket 就不能用于我的需求。我对它们并不了解,在开始之前,我正在观察可能性。再次感谢。 - Débora
1个回答

18

Web sockets是提供Web浏览器和Web服务器之间双向套接字式接口的一种方式,服务器能够推送信息,而不仅仅是响应浏览器的HTTP“拉”请求。根据您的问题和澄清,似乎这不是您所需的。

然而,普通套接字是提供应用程序之间同步通信的好方法。如果接收消息的应用程序可以同步处理它们 - 即在发送后立即处理 - 普通套接字可能是一个很好的解决方案。

消息队列旨在进行异步通信 - 在发送消息后,可能需要将消息存储一段时间,然后才能由接收者接收并采取行动。由于需要存储,消息队列需要单独的服务器来存储消息,或者在某些情况下,如果您已经有一个数据库服务器,则需要使用数据库服务器。

普通套接字简单、快速、轻量级;消息队列则不是,因为它们需要设置一个单独的服务器。但是,如果您需要异步消息传递,可能没有真正简单、快速、轻量级的解决方案,因此消息队列可能是次优的选择。


谢谢你的回答。我也了解了ActiveMq。现在有了你的回答,对于Web套接字、JSM和普通套接字都很清楚了。 - Débora
是的,我想了解普通套接字和JMS之间的区别。 - Yan Khonski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接