"该文件是关于JMS(Java Message Service)和MDB(Message-Driven Bean)的简介,由北京领航致远科技有限公司编写的EJB3.0文档,作者为李腾飞。文档介绍了JMS的基本概念,包括点对点和发布订阅两种消息模型,以及消息的生产和消费。此外,还详细讲解了JMS编程模型中的ConnectionFactory、Destination、Connection、Session、消息生产者和消费者等核心组件,并简要介绍了MDB在EJB3.0中的应用。"
JMS(Java Message Service)是Java平台中用于异步通信的标准接口,它允许应用程序通过消息传递来解耦生产者和消费者。JMS提供了两种主要的消息模型:
1. **点对点(Point-to-Point, P2P)模型**:在这种模型中,消息从一个生产者发送到一个队列,然后由一个或多个消费者从队列中取出并消费。每个消息仅被一个消费者处理,确保消息的一对一传递。
2. **发布订阅(Publish/Subscribe, Pub/Sub)模型**:在发布订阅模型中,消息发布者向一个主题发送消息,而多个订阅者可以订阅这个主题,从而接收发布的消息。这种模型支持一对多的广播式通信。
在JMS编程模型中,涉及以下关键组件:
- **ConnectionFactory**:它是创建连接的工厂,负责创建与JMS提供者的连接。
- **Destination**:代表消息的目的地,可以是队列(Queue)或主题(Topic)。
- **Connection**:表示与JMS提供者的物理连接,用于创建Session。
- **Session**:线程安全的会话对象,用于创建生产者和消费者,同时可以设置是否为事务性。
- **消息生产者(MessageProducer)**:负责创建和发送消息到目的地。
- **消息消费者(MessageConsumer)**:用于接收和处理来自目的地的消息。消费者可以是基于回调的MessageListener,当接收到消息时,会自动调用预先定义的方法。
MDB(Message-Driven Bean)是EJB(Enterprise JavaBeans)的一部分,它是一种特殊类型的无状态会话Bean,用于处理JMS消息。MDB作为Java EE服务器上的后台服务,监听特定的消息队列或主题,当有新消息到达时,MDB自动激活,处理消息,然后返回等待新的消息。这种模式使得应用能够以解耦和异步的方式处理任务,提高系统的可扩展性和可靠性。
在JBOSS5中,JMS服务由JBossMessaging提供,这是JBOSS4中JBossMQ的升级版,它实现了JMS规范,为应用程序提供了可靠的中间件服务。
总结来说,JMS和MDB是Java EE环境中实现异步处理和解耦的关键技术,它们为企业级应用提供了强大的消息通信能力。通过理解这些概念和组件,开发者可以构建出更高效、更灵活的分布式系统。