何时选择JMS API而不是UDP socket API,反之亦然?

10

在一个分布式Java应用程序中,有什么原因可以激励程序员使用Java JMS(Java消息服务)API而不是java.net包的UDP套接字API,或者使用UDP套接字API而不是JMS API?如果可能,请给出示例应用程序。

1个回答

10

UDPJMS在许多方面都有所不同,而且本质上因为JMS通常依赖于TCP的固有功能(查看UDP和TCP的比较可了解这两种底层协议之间的差异)。

基本上,UDP适用于不需要任何可靠性、排序、拥塞控制或网络路由的应用程序(因为许多消费级和商业级路由器不会转发UDP数据包)。而JMS提供了UDP缺失的所有这些特性以及更多功能(如事务、发布/订阅和队列、持久订阅等)。

UDP可能适用于局域网内流式传输大量数据的应用程序,其中绝对质量不是要求;而JMS则更适合需要在广域网主机之间进行可靠消息传递的应用程序。此外,JMS隐藏了套接字、服务器、绑定等细节,并提供了一个更适合企业集成的高级API。


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