JMS即Java消息服务(Java Message Service)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。
JMS的通用接口集合以异步方式发送或接收消息。
1、JMS由以下元素组成
JMS提供者:连接面向消息中间件的,JMS接口的一个实现。提供者可以是Java平台的JMS实现,也可以是非Java平台的面向消息中间件的适配器。
JMS客户:生产或消费消息的基于Java的应用程序或对象。
JMS生产者:创建并发送消息的JMS客户。
JMS消费者:接收消息的JMS客户。
JMS消息:包括可以在JMS客户之间传递的数据的对象
JMS队列:一个容纳那些被发送的等待阅读的消息的区域。队列暗示,这些消息将按照顺序发送。一旦一个消息被阅读,该消息将被从队列中移走。
JMS主题:一种支持发送消息给多个订阅者的机制。
2、JMS模型
点对点或队列模型:如果应用程序开发者希望每一条消息都能够被处理,那么应该使用P2P消息模型。
发布者/订阅者模型:如果一定程度的消息传递的不可靠性可以被接受的话,那么应用程序开发者也可以使用Pub/Sub消息模型。
3、消息传递方式
NON_PERSISTENT:消息最多投递一次,此方式为默认方式。 —— JMS提供者服务重启后消息会丢失
PERSISTENT:消息将使用暂存后再转送的机理投递。 —— JMS提供者服务重启后消息不会丢失
4、消息正文格式
StreamMessage:Java原始值的数据流
MapMessage:一套名称-值对
TextMessage:一个字符串对象
ObjectMessage:一个序列化的 Java对象
BytesMessage:一个未解释字节的数据流
5、JMS应用程序接口
ConnectionFactory 接口(连接工厂):用户用来创建到JMS提供者的连接的被管对象。
Connection 接口(连接):连接代表了应用程序和消息服务器之间的通信链路。
Destination 接口(目标):目标是一个包装了消息目标标识符的被管对象,消息目标是指消息发布和接收的地点,或者是队列,或者是主题。
MessageConsumer 接口(消息消费者):由会话创建的对象,用于接收发送到目标的消息。
消息消费者接收消息的方式有两种:
1)同步方式:consumer.receive() 或 consumer.receive(int timeout):消息的接收者会一直等待下去,直到有消息到达,或者超时。
2)异步方式:注册一个MessageListener:注册一个监听器,当有消息到达的时候,会回调它的onMessage()方法。
MessageProducer 接口(消息生产者):由会话创建的对象,用于发送消息到目标。
Message 接口(消息):是在消费者和生产者之间传送的对象。
一个消息有三个主要部分:
消息头(必须):包含用于识别和为消息寻找路由的操作设置。
一组消息属性(可选):包含额外的属性,支持其他提供者和用户的兼容。可以创建定制的字段和过滤器(消息选择器)。
一个消息体(可选):允许用户创建五种类型的消息(文本消息,映射消息,字节消息,流消息和对象消息)。
Session 接口(会话):表示一个单线程的上下文,用于发送和接收消息。
如果session被标记为transactional,当一个事务被提交时,确认自动发生。
如果session没有标记为transactional,有三个用于消息确认的选项:
AUTO_ACKNOWLEDGE:session将自动地确认收到一则消息。
CLIENT_ACKNOWLEDGE:客户通过消息的acknowledge方法确认消息。需要注意的是,在这种模式中,确认是在会话层上进行:确认一个被消费的消息将自动确认所有已被会话消 费的消息。例如,如果一个消息消费者消费了10个消息,然后确认第5个消息,那么所有10个消息都被确认。
DUPS_OK_ACKNOWLEDGE:该选择只是会话迟钝的确认消息的提交。如果JMS provider失败,那么可能会导致一些重复的消息。如果是重复的消息,那么JMS provider必须把消息头的JMSRedelivered字段设置为true。
6、JMS提供者实现:
Apache ActiveMQ
BEA的BEA WebLogic Server JMS
IBM的WebSphere MQ
分享到:
相关推荐
1. **JMS概述**:JMS提供了一个统一的接口,使得开发者可以使用多种不同的消息中间件(如IBM WebSphere MQ、Apache ActiveMQ等)。通过JMS,开发人员能够编写不依赖于特定消息服务提供商的应用程序,实现跨平台和跨...
Spring-JMS概述** Spring-JMS提供了一种高层次的抽象,简化了JMS的使用。它支持消息模板、监听容器、事务管理等特性,使得开发者可以更专注于业务逻辑而不是底层的消息处理细节。 **4. Spring-JMS配置** - **JMS...
一、JMS概述 JMS是一个标准,由Java Community Process(JCP)制定,允许开发者在Java应用之间发送和接收消息。消息可以是文本、二进制数据或对象,通过消息中间件进行传输,确保了不同应用间的解耦和可靠通信。 二...
- **JMS概述**:章节介绍了JMS的基本原理,包括点到点(P2P)和发布/订阅(Pub/Sub)两种消息模型,以及如何通过JMS与其他企业级Java API协同工作,如JNDI(Java命名和目录接口)。 - **参数配置与应用**:详细说明...
#### 二、JMS概述 ##### 2.1 消息中间件的作用 消息中间件是一种软件层,用于在分布式系统中的不同组件之间传递消息。它的主要作用包括: - **解耦**:将发送者和接收者分离,使得两者无需直接通信。 - **可靠性**...
1. **JMS概述** - **JMS API**:JMS是Java平台上的一个标准接口,定义了生产、发送、接收和浏览消息的API,用于跨网络进行异步通信。 - **消息模型**:JMS支持两种消息模型,点对点(Point-to-Point,P2P)和发布/...
JMS概述 JMS是一种中间件协议,它定义了生产、存储和消费消息的标准接口。JMS提供两种类型的消息模型:点对点(Point-to-Point, P2P)和发布/订阅(Publish/Subscribe)。在点对点模型中,消息由一个生产者发送到...
1. **JMS 概述** - JMS 提供了一种基于消息的中间件接口,使得应用能够通过消息进行异步通信。 - JMS 支持两种主要的消息模型:点对点(Point-to-Point, PTP)和发布/订阅(Publish/Subscribe, Pub/Sub)。 - ...
1. **JMS概述** JMS是Java平台的标准接口,允许开发者通过消息传递在不同的应用程序之间进行通信。它支持两种消息模型:点对点(Point-to-Point, PTP)和发布/订阅(Publish/Subscribe, Pub/Sub)。点对点模型基于...
WebLogic JMS概述 WebLogic Server提供了完整的JMS实现,包括连接工厂、目的地、生产者和消费者等核心组件。WebLogic JMS还支持高级特性,如事务处理、持久化存储以及高可用性等。 - **连接工厂**:用于创建JMS...
#### 一、JMS 概述 JMS(Java Message Service)是一套由Sun Microsystems及其合作伙伴共同制定的Java API标准,旨在为Java应用程序提供创建、发送、接收及读取消息的服务。JMS类似于JDBC(Java Database ...
#### 一、JMS概述 Java消息服务(Java Message Service,简称JMS)是Java平台中的消息中间件规范,它允许应用程序组件通过异步通信来生产、发送、消费和接收消息。JMS提供了一种与具体实现无关的接口,使得开发人员...
#### 企业级消息传递与JMS概述 在深入探讨JMS(Java消息服务)之前,我们先来了解下消息服务的基本概念及其在企业级应用中的重要性。企业级消息传递(Enterprise Messaging)是一种在分布式系统中用于异步通信的...
#### 一、JMS概述与重要性 Java消息服务(JMS)是一项重要的技术,用于实现分布式系统中的消息传递。它为开发者提供了一套标准的API,使得Java应用能够与消息中间件进行交互,无论后者是由哪家厂商提供的。 **重要...
1. **Spring JMS概述** Spring框架提供了强大的支持来简化JMS的使用,包括自动配置、模板化API以及消息监听容器。通过Spring,我们可以轻松地创建生产者和消费者,进行消息发送和接收。 2. **JMS基本概念** - **...
一、Spring JMS概述 Spring提供了对JMS的全面支持,包括连接工厂配置、消息生产者、消费者以及消息转换器等。JMS允许应用程序通过消息中间件进行解耦通信,提高系统的可扩展性和可靠性。Spring JMS抽象了JMS API,...
### WebLogic JMS概述 WebLogic JMS(Java Message Service)是一套提供企业级消息服务的解决方案,它通过消息中间件的形式,实现了应用组件间的异步通信。WebLogic Server 作为应用服务器的一部分,提供了JMS服务的...
#### JMS概述 Java消息服务(Java Message Service, JMS)是Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布于网络的不同部分中的组件之间进行通信。JMS规范定义了一套标准的API,使得...
##### 3.1 JMS概述 JMS(Java Message Service)源于企业级应用对于消息中间件的需求,其目的是为了实现应用程序之间的异步消息传递。JMS主要包括以下组成部分: - **JMS服务提供者**:实现消息队列和通知功能,并...