JMS 是用于在两个或多个客户端之间传输消息的 API。它的规格在 JSR 914 下定义。
JMS 的主要优点是通信实体的解耦特性 - 发送方不需要有关接收方的信息。其他优势包括集成异构平台、减少系统瓶颈、提高可扩展性以及更快速地响应变化的能力。
JMS 只是一种接口/API,必须实现具体的类。这些已经由各种组织/提供商实施。它们被称为 JMS 提供者。例如 IBM 的WebSphere或Fiorano Softwares 的FioranoMQ或 Apache、HornetQ、OpenMQ 等的 ActiveMQ。使用的其他术语是管理对象(主题、队列、连接工厂)、JMS 生产者/发布者、JMS 客户端和消息本身。
所以来到你的问题 -what is JMS good for?
我想举一个实际的例子来说明它的重要性。
日间交易
有一个称为LVC(最后值缓存)的功能
在交易中,股价由出版商定期发布。每个共享都有一个发布到的关联主题。现在,如果您知道什么是主题,那么您必须知道消息不像队列那样保存。消息在消息发布时被发布给活跃的订阅者(例外是 Durables 订阅者,它们从创建时获取所有发布的消息,但是我们又不想获得太旧的股票价格,这放弃了使用它)。因此,如果客户想知道股票价格,他会创建一个订阅者,然后他必须等到下一个股票价格发布(这又不是我们想要的)。这就是 LVC 发挥作用的地方。每个 LVC 消息都有一个关联的密钥。如果使用 LVC 密钥(针对特定股票)发送消息,然后使用相同密钥发送另一条更新消息,则后者会覆盖前一个消息。当订阅者订阅一个主题(启用了 LVC)时,订阅者将获得具有不同 LVC 键的所有消息。如果我们为每个上市公司保留一个不同的密钥,那么当客户订阅它时,它将获得最新的股票价格并最终获得所有更新。
Ofcourse this is one of the factors other that reliability,security etc which makes JMS so powerful.