可以激励程序员在分布式 Java 应用程序中使用 Java JMS(Java 消息服务)API 而不是 java.net 包的 UDP 套接字 API 或使用 UDP 套接字 API 而不是 JMS API 的原因是什么?如果可能,请给出示例应用程序。
最佳答案
UDP和 JMS在很多方面都不同,而且从根本上说,因为 JMS 通常依赖于 TCP 固有的特性(查看 comparison of UDP and TCP 以了解这两个底层协议(protocol)的差异)。
基本上 UDP 适用于不需要任何可靠性、顺序、拥塞控制或网络间路由的应用程序(因为许多消费级和商业级路由器不转发 UDP 数据包)。 JMS 提供了 UDP 所缺少的所有这些功能以及更多功能(例如事务、发布/订阅和队列、持久订阅等)。
UDP 可能适用于在不要求绝对质量的局域网中传输大量数据; JMS 更适合需要在广域网主机之间进行可靠消息传递的应用程序。此外,JMS 隐藏了套接字、服务器、绑定(bind)等细节,并提供更适合企业集成的高级 API。
关于java - 何时选择 JMS API 而不是 UDP 套接字 API,反之亦然?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8510626/