java - 何时选择 JMS API 而不是 UDP 套接字 API,反之亦然?

标签 java sockets udp jms

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

最佳答案

UDPJMS在很多方面都不同,而且从根本上说,因为 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/

相关文章:

node.js - 套接字流对话的 Node.js 范例是什么?

java - 如何有效地将 UDP 数据包绑定(bind)到实体

java - 如何将 JSP <form> 中的值传递到 java 方法中

java - 单击布局时如何选中复选框?

java - 我正在尝试为插入时间表的方法编写一个 JUnit 测试用例,该时间表将参数作为员工 ID。我应该如何尝试?

c++ - 当 TCP TX 缓冲区填满时,boost::asio 会发生什么?

java - WARN/ActivityManager(78) : Launch timeout has expired, 放弃唤醒锁! -> 这是什么

C - 对结构的 DNS 查询

c# - 发送UDP广播,接收多条消息

java - 安卓工作室 : 'C:\Program Files\Java\jdk1.8.0_51\bin\java.exe' ' finished with non-zero exit value 1