"本文介绍了JMS(Java Messaging Service)的架构和基本概念,包括消息生产者、消息消费者、JMS消息、被管理的JMS对象、命名服务JNDI以及消息传输模式。JMS用于在J2EE环境中实现异步通信,支持点对点(PTP)和发布/订阅(Pub/Sub)两种模式。JMS API提供了相应的接口来处理这两种模式,如Queue和Topic接口。JMS架构有助于解决传统客户/服务器架构中的维护难题和网络性能问题,推动了三层分布式对象架构和N层计算模式的发展,实现了更灵活、可伸缩的系统设计。"
在J2EE环境中,JMS作为一个重要的中间件技术,允许应用程序之间进行异步通信。它定义了标准接口和消息模型,确保不同应用间的互操作性。JMS的架构主要包括以下几个组件:
1. **消息生产者**:是应用程序的一部分,负责创建消息并发送到指定的目的地。生产者可以创建不同类型的消息,根据应用需求,如错误通知、电子邮件等。
2. **消息消费者**:接收和处理消息的应用组件。消费者可以有多个,每个可能处理不同类型的事件。
3. **JMS消息**:作为信息载体,消息可以包含文本、状态信息甚至是Java对象。消息由JMS对象封装,便于传输。
4. **被管理的JMS对象**:主要是目的地,例如队列(Queue)和主题(Topic)。这些对象在应用部署时创建并初始化,通过JNDI(Java Naming and Directory Interface)服务来定位和访问。
5. **JNDI命名服务**:允许消息生产者和消费者查找和使用被管理的JMS对象,如队列和主题。
JMS提供了两种消息传输模式:
- **点对点(PTP)模式**:通过队列实现,每个消息仅有一个接收者。生产者是QueueSender,消费者是QueueReceiver。
- **发布/订阅(Pub/Sub)模式**:通过主题实现,一个消息可以被多个接收者(订阅者)接收。发布者是TopicPublisher,订阅者是TopicSubscriber。
JMS API 提供了 `javax.jms` 包,包含了处理这两种模式的接口。`Queue` 和 `Topic` 接口扩展自 `Destination` 接口,分别对应PTP和Pub/Sub模式。
传统的客户端/服务器架构(如“胖客户端”)存在维护困难、更新成本高、紧密耦合数据库模式、网络性能差和数据库连接管理复杂等问题。而J2EE的JMS解决方案通过引入三层分布式对象架构或N层计算模式,解决了这些问题,实现了更高效的资源管理和更好的可扩展性。这种模式下,业务逻辑集中在服务器端,客户端变得更轻量级,降低了维护成本,提高了网络性能,同时利用了连接池、多线程等技术优化了系统性能。