在理解JMS(java message service) API之前,先理清楚几个概念。
什么是消息
消息就是组件或者应用之间一种通讯的方式。一个消息系统就是一个P2P(peer-to-peer)设备,提供消息的创建、发送、接收和读取功能。
消息中心使得分布式系统可以实现解耦。一个组件将消息发送到消息中心,而另一个组件负责从消息中心接收消息,且这发送者和接收者不需要同时处于可用状态,且接受者不需要感知发送者。发送者和接受者只需要知道消息的格式和消息中心的存在即可。这是跟远程服务之间的最大区别(远程服务需要知道服务的定义,则需要感知服务定义方)。另外消息有别于电子邮件(是人或者应用与人之间的交互)。
什么是JMS API
JMS就是java的API,允许应用创建、发送、接收、读取消息。由sun及其合作公司设计。JMS定义了一系列的接口及相关语义使得用java实现的程序可以与其他实现进行交互。
JMS在学习成本尽可能小的前提下,提供了大量的扩展性。使得整个交互不仅仅是解耦,并且具有以下特性:
异步性
JMS提供者可以在消息到达之后立马投递。客户端接受消息,但不一定立马需要这个消息。
可靠性
JMS能保证消息有且仅有一次被投递。
什么时候需要使用JMS API
当符合以下几种情况的时候,就需要使用消息API而不是RPC(Remote Procedure Call)
1. 提供者组件不要感知另外的组件,这样组件可以轻易被替换
2. 提供者不希望依赖其他组件runing的状态
3. 消息发出之后,不需要实时的响应
比如说以下这几种现实的情况:
1. 库存组件可以在库存低于某个阈值的时候给工厂组件发一个消息,这样工厂可以生产更多的产品。
2. 工厂组件可以给组装组件发消息,使得其能组装自己需要的部分。
3. 组装组件给自己的库存组件和预定组件发消息来扣减库存和向供应商预定新的原料。
4. 工厂组件和组装组件可以给结算组件发消息来更新自己的预算。
JMS API是怎么在J2EE的平台上工作的
这个后续补充,先了解J2EE了再说