一个消息对象分为三部分:消息头(Headers),属性(Properties)和消息体(Payload)。对于StreamMessage和MapMessage,消息本身就有特定的结构,而对于TextMessage,ObjectMessage和BytesMessage是无结构的。一个消息可以包含一些重要的数据或者仅仅是一个事件的通知。
消息的Headers部分通常包含一些消息的描述信息,它们都是标准的描述信息。包含下面一些值:
JMSDestination
消息的目的地,Topic或者是Queue。
JMSDeliveryMode
消息的发送模式:persistent或nonpersistent。前者表示消息在被消费之前,如果JMS提供者DOWN了,重新启动后消息仍然存在。后者在这种情况下表示消息会被丢失。可以通过下面的方式设置:
Producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
JMSTimestamp
当调用send()方法的时候,JMSTimestamp会被自动设置为当前事件。可以通过下面方式得到这个值:
long timestamp = message.getJMSTimestamp();
JMSExpiration 表示一个消息的有效期。只有在这个有效期内,消息消费者才可以消费这个消息。默认值为0,表示消息永不过期。可以通过下面的方式设置:
producer.setTimeToLive(3600000); //有效期1小时 (1000毫秒 * 60秒 * 60分)
JMSPriority 消息的优先级。0-4为正常的优先级,5-9为高优先级。可以通过下面方式设置:
producer.setPriority(9);
JMSMessageID 一个字符串用来唯一标示一个消息。
JMSReplyTo 有时消息生产者希望消费者回复一个消息,JMSReplyTo为一个Destination,表示需要回复的目的地。当然消费者可以不理会它。
JMSCorrelationID 通常用来关联多个Message。例如需要回复一个消息,可以把JMSCorrelationID设置为所收到的消息的JMSMessageID。
JMSType 表示消息体的结构,和JMS提供者有关。
JMSRedelivered 如果这个值为true,表示消息是被重新发送了。因为有时消费者没有确认他已经收到消息或者JMS提供者不确定消费者是否已经收到。
除了Header,消息发送者可以添加一些属性(Properties)。这些属性可以是应用自定义的属性,JMS定义的属性和JMS提供者定义的属性。我们通常只适用自定义的属性。
后面会讲到这些Header和属性的用法。
相关推荐
**JMS消息队列机制详解** Java Message Service(JMS)是Java平台中用于企业级应用间异步通信的一种标准接口。它定义了生产、发送、接收和读取消息的标准API,使得不同的消息中间件提供商可以提供兼容的实现,便于...
3. **JMS消息结构**:JMS消息主要包括消息头、属性和消息体三个部分。 - **消息头**:包含消息的识别信息和路由信息。 - `JMSDestination`:消息发送的目的地。 - `JMSDeliveryMode`:指定消息是否需要持久化。 ...
JMS消息头字段(Header Fields)包括: * JMSDestination:消息发送目的地 * JMSDeliveryMode:消息传递模式 * JMSMessageID:消息ID * JMSTimestamp:消息发送时间戳 * JMSCorrelationID:提供方特殊ID、应用特殊...
消息头、消息属性和消息体构成了JMS消息的基本结构。 在实际应用中,常见的JMS实现包括Apache ActiveMQ、IBM WebSphere MQ和RabbitMQ等。这些中间件提供了高可用性、负载均衡和持久化等功能,确保即使在服务器故障...
JMS消息由消息头、属性和消息体三部分组成。消息头包含了识别和路由信息,如JMSDestination、JMSMessageID等,这些由发送方或JMS Provider设置。属性允许用户自定义额外的信息,而消息体则承载实际的数据内容。 在...
1. **Message**:表示JMS消息的基本接口,包含了消息头、属性和消息体。 2. **ConnectionFactory**:用于创建连接到JMS提供者的对象。 3. **Connection**:代表与JMS提供者的会话,用于创建会话和消费者。 4. **...
【JMS消息服务详解】 消息服务是一种在分布式环境中支持软件组件和应用程序之间松耦合通信的机制。这种通信模式允许组件或应用之间不需同时在线,数据可以是文本、数值,甚至在Java应用中可以包含对象。使用消息...
在“mq、jms消息处理jar包”中,包含的jar文件通常是为了让Java应用能够与IBM MQ交互,使用JMS API。这些jar包可能包括以下部分: 1. `com.ibm.mq.allclient.jar`:这是IBM MQ客户端库的核心,包含了与MQ服务器通信...
**2.4 消息头字段** - **JMSDestination**:指定了消息的目的地,可以是一个队列或一个主题。 - **JMSDeliveryMode**:指示消息的持久性,是PERSISTENT(持久化)还是NON_PERSISTENT(非持久化)。 - **...
JMS消息由消息头、消息属性和消息体三部分组成: **1.3.1 消息头** 消息头包含消息的识别信息和路由信息,具体属性如下: - **JMSDestination**:消息发送的目的地,自动分配。 - **JMSDeliveryMode**:传送模式...
Java消息服务(Java Message Service,简称JMS)是Java平台中用于企业级应用间异步通信的一种标准接口。它允许应用程序创建、发送、接收和读取消息,使得应用程序能够在不直接连接的情况下进行通信,提高了系统的可...
例如,只接收满足特定条件(如消息头属性)的消息。 8. **事务管理**: JMS还支持事务,确保消息的可靠传递。生产者可以将一组消息放入一个事务中,只有当所有消息都成功发送时,事务才会提交。 总结起来,JMS的...
消息头是必需的,包含如目的地、递送模式、消息ID等字段。属性和消息体是可选的,属性用于消息过滤,消息体用于承载实际数据。 - **消息体类型**:JMS定义了六种消息体类型,包括无消息体的Message、二进制流的...
消息可以是文本、对象或者二进制数据,通过消息体、头和属性来定义其格式和目标。 2. **消息队列(Message Queue)与主题(Topic)**: JMS提供了两种消息模型:点对点(Point-to-Point,P2P)和发布/订阅(Publish/...
7. **JMS API**:提供了多种接口,如`ConnectionFactory`用于创建连接,`Connection`代表与消息代理的连接,`Session`用于创建消息的消费者和生产者,`Message`接口是所有JMS消息的基类。 8. **事务管理**:JMS支持...
- **消息**:包括消息头、消息体和其他扩展属性。 - **目的地**:指定消息的目标和来源的对象。 - **消息队列 (Queue)**:点对点的消息队列。 - **消息主题 (Topic)**:发布订阅的消息队列。 #### JMS 消息发送模式...
2. **消息**:JMS消息是数据的载体,它包含了一个消息头、可选的消息属性以及消息体。消息头包含了如目的地、优先级、时间戳等信息。消息属性允许附加自定义的元数据。消息体则可以是文本、二进制数据或者其他复杂的...
- **JavaBeans:** JMS消息可以被封装在JavaBeans组件中,以便在不同的环境中传递。 - **EJB(Enterprise JavaBeans):** EJB组件可以使用JMS来进行消息传递,特别是在分布式环境中。 - **JTA(Java Transaction ...
1. **消息组成**:JMS消息由头、属性和主体组成。头包含了路由消息所需的标准字段,属性是可选的自定义字段,主体则包含消息的实际内容。JMS提供了多种消息类型,如StreamMessage、MapMessage、TextMessage、...