消息中间件和 JMS 消息服务
当前,CORBA、DCOM、RMI 等 RPC 中间件技术已广泛应用于各个领域。但是面对规模和
复杂度都越来越高的分布式系统,这些技术也显示出其局限性:(1)同步通信:客户发出
调用后,必须等待服务对象完成处理并返回结果后才能继续执行;(2)客户和服务对象的
生命周期紧密耦合:客户进程和服务对象进程都必须正常运行;如果由于服务对象崩溃或者
网络故障导致客户的请求不可达,客户会接收到异常;(3)点对点通信:客户的一次调用
只发送给某个单独的目标对象。
面向消息的中间件(Message Oriented Middleware,MOM)较好的解决了以上问题。发
送者将消息发送给消息服务器,消息服务器将消息存放在若干队列中,在合适的时候再将消
息转发给接收者。这种模式下,发送和接收是异步的,发送者无需等待;二者的生命周期未
必相同:发送消息的时候接收者不一定运行,接收消息的时候发送者也不一定运行;一对多
通信:对于一个消息可以有多个接收者。
已有的 MOM 系统包括 IBM 的 MQSeries、Microsoft 的 MSMQ 和 BEA 的 MessageQ 等。由于
没有一个通用的标准,这些系统很难实现互操作和无缝连接。Java Message Service(JMS)
是 SUN 提出的旨在统一各种 MOM 系统接口的规范,它包含点对点(Point to Point,PTP)
和发布/订阅(Publish/Subscribe,pub/sub)两种消息模型,提供可靠消息传输、事务和
消息过滤等机制。
1.JMS
JAVA 消息服务(JMS)定义了 Java 中访问消息中间件的接口。JMS 只是接口,并没有给
予实现,实现 JMS 接口的消息中间件称为 JMS Provider,iLink 实现了 JMS 接口,用户可
以通过使用 JMS 接口,在 iLink 中进行 JMS 编程。 iLink 支持 JMS1.0.2 版本。
2.JMS 接口描述
JMS 支持两种消息类型 PTP 和 Pub/Sub,分别称作:PTP Domain 和 Pub/Sub Domain,
这两种接口都继承统一的 JMS 父接口,JMS 主要接口如下所示:
MS 父接口 PTP Pub/Sub
QueueConnectionFactory TopicConnectionFactory ConnectionFactory
Connection QueueConnection TopicConnection
Destination Queue Topic
Session QueueSession TopicSession
MessageProducer QueueSender TopicPublisher
MessageConsumer QueueReceiver,QueueBrowser TopicSubscriber
ConnectionFactory :连接工厂,JMS 用它创建连接
Connection :JMS 客户端到 JMS Provider 的连接
Destination :消息的目的地
Session: 一个发送或接收消息的线程
评论3
最新资源