1. JMS消息模型
JMS消息由以下几部分组成:消息头,属性,消息体。
1)消息头(Header)
消息头包含消息的识别信息和路由信息,消息头包含一些标准的属性如:JMSDestination,JMSMessageID 等。
消息头 |
由谁设置 |
JMSDestination |
send 或 publish 方法 |
JMSDeliveryMode |
send 或 publish 方法 |
JMSExpiration |
send 或 publish 方法 |
JMSPriority |
send 或 publish 方法 |
JMSMessageID |
send 或 publish 方法 |
JMSTimestamp |
send 或 publish 方法 |
JMSCorrelationID |
客户 |
JMSReplyTo |
客户 |
JMSType |
客户 |
JMSRedelivered |
JMS Provider |
2)属性(Properties)
除了消息头中定义好的标准属性外,JMS 提供一种机制增加新属性到消息头中,这种新属性包含以下几种:
- 应用需要用到的属性;
- 消息头中原有的一些可选属性;
- JMS Provider 需要用到的属性。
标准的JMS 消息头包含以下属性:
- JMSDestination --消息发送的目的地
- JMSDeliveryMode --传递模式,有两种模式: PERSISTENT 和NON_PERSISTENT,PERSISTENT 表示该消息一定要被送到目的地,否则会导致应用错误。NON_PERSISTENT 表示偶然丢失该消息是被允许的,这两种模式使开发者可以在消息传递的可靠性和吞吐量之间找到平衡点。
- JMSMessageID 唯一识别每个消息的标识,由JMS Provider 产生。
- JMSTimestamp 一个消息被提交给JMS Provider 到消息被发出的时间。
- JMSCorrelationID 用来连接到另外一个消息,典型的应用是在回复消息中连接到原消息。
- JMSReplyTo 提供本消息回复消息的目的地址。
- JMSRedelivered 如果一个客户端收到一个设置了JMSRedelivered 属性的消息,则表示可能该客户端曾经在早些时候收到过该消息,但并没有签收(acknowledged)。
- JMSType 消息类型的识别符。
- JMSExpiration 消息过期时间,等于QueueSender 的send 方法中的timeToLive 值或TopicPublisher 的publish 方法中的timeToLive 值加上发送时刻的GMT 时间值。如果timeToLive值等于零,则JMSExpiration 被设为零,表示该消息永不过期。如果发送后,在消息过期时间之后消息还没有被发送到目的地,则该消息被清除。
- JMSPriority 消息优先级,从0-9 十个级别,0-4 是普通消息,5-9 是加急消息。JMS 不要求JMS Provider 严格按照这十个优先级发送消息,但必须保证加急消息要先于普通消息到达。
3)消息体(Body)
JMS API 定义了5种消息体格式,也叫消息类型,你可以使用不同形式发送接收数据并可以兼容现有的消息格式,下面描述这5种类型:
消息类型 |
消息体 |
TextMessage |
java.lang.String对象,如xml文件内容 |
MapMessage |
名/值对的集合,名是String对象,值类型可以是Java任何基本类型 |
BytesMessage |
字节流 |
StreamMessage |
Java中的输入输出流 |
ObjectMessage |
Java中的可序列化对象 |
Message |
没有消息体,只有消息头和属性。 |
相关推荐
**JMS学习笔记(一)——JMS简介与ActiveMQ安装** Java消息服务(Java Message Service,简称JMS)是Java平台中用于企业级应用间异步通信的标准接口。它为应用程序提供了一种标准的方式,用来创建、发送、接收和读取...
ESB学习笔记9——第八个ESB应用JMS_Router.doc》和《JBoss_ESB学习笔记10——第九个ESB应用JMS_Topic.doc》涉及到了JMS(Java Message Service)在ESB中的应用,讲解了如何利用ESB进行消息路由和发布/订阅模型,以...
在本篇ActiveMQ学习笔记中,我们将探讨JMS(Java Message Service)与Spring框架的集成。JMS是一种标准API,用于在分布式环境中进行异步消息传递,而Spring框架则为开发人员提供了强大的依赖注入和管理服务的能力。...
### 深入解析《ejb学习笔记5》——消息驱动Bean详解 #### 消息驱动Bean概述 消息驱动Bean(MDB,Message Driven Bean)是Enterprise JavaBeans(EJB)框架中的一个重要组成部分,主要用于接收并处理来自消息中间件...
从给定的文件信息来看,标题和描述都指向了“Java分布式学习笔记01分布式Java应用”,这显然是关于Java在分布式环境下的应用和技术的学习资料。虽然提供的部分内容由于格式问题难以直接解析,但我们可以根据标题、...
### 韩顺平JSP学习笔记与源代码解析 #### J2EE的十三种技术(规范) 在韩顺平老师的教学笔记中,首先提到了J2EE平台下的十三种核心技术,这些技术对于理解JSP及其相关的Web开发环境至关重要。 1. **Java数据库...
Spring为各种企业服务API提供了统一的抽象,如JDBC、JMS、JMX等,使得开发者无需直接与这些底层API交互,而是通过Spring的简单API来使用。这提高了代码的可读性和可维护性。 **事务管理**: Spring提供了声明式事务...
【Web Service学习笔记——XFrie框架详解】 Web Service是一种通过网络进行通信的服务,它允许不同的应用程序之间进行数据交换,跨越了操作系统和编程语言的障碍。XFrie是一个轻量级、高性能的Java Web Service框架...
本文作为SCA的学习笔记,旨在深入探讨SCA的核心概念、特点以及实际应用,并特别关注Tuscany——一个广受欢迎的Apache开源SCA框架及其在Web 2.0时代的应用扩展。 首先,SCA的核心概念源于对SOA模型的进一步抽象和...
**J2EE框架详解——基于MLDN的学习笔记** J2EE(Java 2 Platform, Enterprise Edition)是Java平台上用于构建企业级应用的框架,它提供了一系列的组件和服务,旨在简化多层分布式应用的开发和部署。这套“MLDN_J2EE...
Struts2学习笔记.docx和Struts2-Introduction.pdf将介绍Struts2的基本架构、Action、结果类型、拦截器、配置文件等关键概念。Struts2笔记.ppt则可能是对Struts2框架的实践总结,包括常见问题和解决方案。 总的来说...
"最全的java达内笔记"显然是一份集大成的Java学习资料,源自知名的IT培训机构——达内。达内以其系统化的课程和实战导向的教学模式而闻名,这份笔记很可能包含了Java从基础到进阶的全方位知识。 首先,EJB...