`
JFires
  • 浏览: 43204 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

2.4JMS规范(二)

阅读更多

2.4.5 JMS消息内部

    就像上面提到的,JMS消息复杂部分在它的头部。有两种头部,它们都是基于相同的逻辑概念,但是有很大的不同。除了一系列标准的头部和方法,还有properties方法。poperties是基于Java类型,用来处理自定义头部。

JMS消息头部

    如图2.5所示,JMS消息支持一系列标准的消息头部,并且为之提供JMS API。很多头部会自动被赋值。接下来将描述这些头部,并看看它们 是怎么被赋值。



  通过send()方法自动被赋值的头部:

  • JMSDestination----消息被发送到的目的地。这个对于从多个目标中接收消息的客户端有用。
  • JMSDeliveryMode----JMS支持两种消息发送模式:持久化和非持久化。默认是持久化的消息。不同的模式有不同的负载,也提供不同级别的可靠性。

          持久的(Persistent)----让JMS提供者持久化消息,所以当provider失败时消息不会丢失。JMS提供者必须投递每个持久化消息一次并且只有一次。也就是说,即使JMS提供者失败,消息不会丢失也不会被投递多于一次。  由于需要存储消息及提高稳定性,所以持久化消息会要求更多的开销。

          非持久的(Nonpersistent)----让JMS提供者不要持久化消息。JMS对于非持久化消息最多投递一次。也就是说,如果消息投递失败,则会丢失。非持久化消息开销较小,同时稳定性也较差。

          消息投递模式是设置在生产者上面的,它对该生产者生产的所有消息有效。不过,消息投递模式也可以在单独的发生某个消息时被重写。

  • JMSExpiration----JMS消息的过期时间。这个头部会阻止发送一条已经过期的消息。有两种方法设置过期时间。一种是通过MessageProducer.setTimeToLive()方法,此方法设置的消息存在时间对所有由该生产者生产的消息有效;一种是通过MessageProducer.send()方法,此方法设置的消息有效时间对本次发送的消息有效。

    JMSExpiration头部是通过time-to-live时间加上当前时间计算出来的。默认地,time-to-live时间是零,这意味着消息永远不会过期。如果time-to-live被明确赋值为0,效果也是一样的。

    这个头部对于时间敏感的消息有用。不过要注意,虽然JMS提供者不会发送过期消息,JMS客户端自己也必须保证不处理过期消息。    

  • JMSMessageID----JMS提供者产生的消息唯一标识,它必须以提供者的id开头。消息id可以用在消息处理,也可以储存下来用于追踪历史信息。由于生成id会给JMS提供者带来一些开销,所以生产者可以通过MessageProducer.setDisableMessageID()方法,告诉JMS提供者,应用不需要JMSMessageID。如果JMS提供者接受请求,则消息ID会被设置为null。不过要注意,JMS也可能忽略该请求,仍然提供MessageID。
  • JMSPriority----用于指明消息的重要级别。这个也是设置在消息生产者上面的,并且对该生产者生产的所有消息有效。也可以对单独的消息重写这个优先级。JMS定义了0-9十个基本的优先级。

         Priorities 0-4 ----属于通常级别。

         Priorities 5-9 ----属于加快级别。

         JMS提供者并没有被要求实现消息顺序,不过大多数都会提供该功能。它们可能简单地先发送高优先级的消息再发

         送低优先级的消息。

  • JMSTimestamp----显示消息是何时从生产者发到消息提供者的。这个值使用Java标准毫秒数。就像JMSMessageID一样,生产者也可以建议JMS提供者不用提供这个值。设置的方法是MessageProducer.setDisableMessageTimestamp()。如果JMS提供者接受该建议,则这个值被设置为0.

客户端可选的头部 :

  • JMSCorrelationID----用来关联当前消息和之前的消息。最常用在关联一条响应消息和它的请求消息。这个值可以是:

          * 一个提供者指定的消息ID。

          * 一个应用指定的字符串。

          * 一个提供者本地的字节数组

          由提供者指定的消息ID都会带有ID前缀,所以,应用指定的字符串不应带有ID前缀。如果一个JMS提供者支持本地

          的correlation ID,那么JMS客户端可能需要对correlation ID赋值以匹配非JMS客户端,不过这个并非强制要

          求。

  • JMSReplyTo----用来指定一个响应发生的目标。这个值一般用在请求/响应的消息传送风格中。使用该头部的消息表明它期望得到响应,不过这并非强制要求。由客户端决定是否响应。
  • JMSType----语义上的消息类型。只有很少供应商使用该头部,而且它和消息的负载类型(持久化/非持久化)无关。

 

  • 大小: 19.5 KB
2
1
分享到:
评论

相关推荐

    JMS规范教程pdf

    ### JMS规范教程知识点解析 #### 一、JMS基本概念 **1.1 什么是JMS(JAVA MESSAGE SERVICE)?** JMS,即Java Message Service,是Java平台中的消息服务应用标准,允许应用程序组件通过Java消息服务进行通信。它...

    JMS规范PDF

    ### JMS规范1.1(中文版)关键知识点解析 #### 一、引言 **1.1 摘要** - **主要内容:** 该规范详细介绍了Java消息服务(Java Message Service,简称JMS)的目标及其核心功能。JMS为Java开发者提供了一套统一的...

    JMS1.1规范(中文版)

    #### 二、JMS的关键概念与技术 ##### 2.1 架构概述 - **基本概念**:JMS应用程序、消息生产者、消息消费者、消息代理等。 - **管理层面**:涉及到配置、监控及故障恢复等方面。 - **消息风格**:分为点到点(P2P)和...

    jms规范说明

    ### JMS规范详解 #### 一、JMS基础概览 **1.1 何为JMS(Java Message Service)?** JMS,即Java消息服务,是Java平台中的消息中间件规范,它允许应用程序创建、发送、接收和读取消息,从而在两台或多台计算机...

    jms 规范教程

    ### JMS规范教程知识点解析 #### 一、JMS基本概念 **1.1 什么是JMS(JAVA MESSAGE SERVICE)?** JMS,即Java Message Service,是Java平台中的消息服务应用标准,它允许应用程序组件生成、发送、接收以及读取...

    J2EE技术架构规范

    附件二则提供了选择Spring和EJB的场景参考指标,帮助开发团队根据项目需求做出合适的技术选型。 综上,J2EE技术架构规范是指导开发人员构建高质量、可扩展且安全的BS应用的重要指南,它的应用有助于提升软件工程的...

    J2EE规范(中文版)

    它包含了各种服务,如Servlet、JSP(JavaServer Pages)、EJB(Enterprise JavaBeans)、JMS(Java Message Service)等,为企业应用提供基础架构。 2. **Java EE 兼容性测试套件**:确保Java EE产品(如应用服务器...

    ActiveMQ中文手册

    1.3 JMS 规范的变迁 4 2.ActiveMQ 4 2.1 Broker 4 2.1.1 运行Broker 4 2.1.2 嵌入式Broker 4 2.1.3 监控Broker 5 2.2 Transport 9 2.2.1 VM Transport 9 2.2.2 TCP Transport 10 2.2.3 Failover ...

    Java WebService开发指南_2.4.pdf

    Java WebService开发指南_2.4.pdf 是一份详细介绍如何使用Java进行Web Service开发的文档,主要涵盖了Axis2、XFire和CXF这三个流行的开源Web Service框架。这些框架都是用于构建和消费Web服务的重要工具,它们基于...

    activemq的相关jar文件

    3. **geronimo-spec-servlet-2.4-rc1.jar**:实现了Servlet 2.4规范,是Web服务器和Java应用程序之间交互的基础,可能用于ActiveMQ的Web管理界面。 4. **geronimo-spec-jsp-2.0-rc1.jar**:提供了JavaServer Pages...

    Java_EE_6规范中文版

    2.4 容器 2.5 资源适配器 2.6 数据库 2.7 Java EE标准服务 2.8 互用性 2.9 产品标准的灵活性 2.10 Java EE产品的扩展 2.11 平台角色 2.12 平台协议 2.13 J2EE 1.3中的变化 2.14 J2EE 1.4中的变化 2.15 Java EE 5...

    resin-3.1.9-src

    2.4 JMS(Java Message Service) Resin通过`com.caucho.jms`包实现了JMS接口,允许应用进行消息传递。`MessageServer`类是消息服务的核心,处理消息的生产、消费和队列管理。 2.5 JDBC和JTA Resin支持JDBC数据源和...

    JBI规范下载,ESB资料

    **2.4 规格化消息交换** - 规格化消息交换机制是JBI的核心,它定义了如何在组件间传递消息。 **2.5 管理** - 包括组件安装、生命周期管理、服务单元部署等方面,确保系统的稳定运行。 **2.6 组件框架** - 提供了...

    Jmeter测试ActiveMQ性能报告

    ActiveMQ是Apache软件基金会开发的一款开源消息代理,它实现了JMS规范,提供了高效、可靠的消息传递能力。JMS则是一种标准接口,使得应用程序可以与不同的消息中间件进行交互,确保消息的可靠传输。 2. 测试环境...

    Java EE 6 标准与规范(中文版)

    **2.4 用户验证的必要条件** - 使用HTTP基本认证或表单登录等方式进行用户验证。 **2.5 授权条件** - 定义角色和权限来控制访问。 **2.6 部署标准** - 在部署描述符中定义安全约束。 **2.7 未来的方向** Java...

    JBOSS使用指南

    二.JBOSS的配置 1. JBoss日志设置 2. web 服务的端口号的修改 3. JBoss 的安全设置 3.1 jmx-console 登录的用户名和密码设置 3.2 web-console 登录的用户名和密码设置 4. JBoss 数据源的配置 5. JMS使用和设置 5.1 ...

    JavaEE_5.0规范_简体中文版

    #### 二、JavaEE 5.0 平台架构与组件 ##### 2.1 架构概述 JavaEE 5.0架构提供了一个全面的框架,用于开发和部署可伸缩、健壮的企业级应用程序。它包括多个组件和服务层,旨在简化开发过程并提高应用程序的性能。 ...

    JavaEE 5.0规范中文版

    #### 二、JavaEE 5.0平台架构与组件 ##### 2.1 平台概述 JavaEE 5.0平台提供了一个统一的框架,用于构建和部署各种类型的应用程序。它包括一系列的服务、API和工具,使开发者能够更容易地创建、部署和管理复杂的...

Global site tag (gtag.js) - Google Analytics