`
阅读更多

1. JMS基本概念
JMS(Java Message Service)
是访问企业消息系统的标准API,它便于消息系
统中的Java应用程序进行消息交换,并且通过提供标准的产生、发送、接收消息的接口简化企业应用的开发。

2. JMS基本功能
JMS
是用于和面向消息的中间件相互通信的应用程序接口。它既支持点对点(point-to-point)的域,又支持发布/订阅(publish/subscribe)类型的域,并且提供对下列类型的支持:经认可的消息传递,事务型消息的传递,一致性消息和具有持久性的订阅者支持。JMS还提供了另一种方式来对您的应用与旧的后台系统相集成。 下图是JMS的通信过程:

3.消息通信模型

JMS 支持两种消息通信模型:点到点(point-to-point)(PTP)模型和发布/订阅(Pub/Sub)模型。除了下列不同之外,这两种消息通信模型非常地相似:
PTP
模型规定了一个消息只能有一个接收者;Pub/Sub 模型允许一个消息可以有多个接收者。

点到点(point-to-point)(PTP)模型:

发布/订阅(Pub/Sub)模型:

4.消息组成

消息传递系统的中心就是消息。
一条 Message 分为三个组成部分:
· 头(header)是个标准字段集,客户机和供应商都用它来标识和路由消息。
· 属性(property)支持把可选头字段添加到消息。如果您的应用程序需要不使用标准头字段对消息编目和分类,您就可以添加一个属性到消息以实现这个编目和分类。提供 set<Type>Property(...) 和 get<Type>Property(...) 方法以设置和获取各种 Java 类型的属性,包括 Object。JMS 定义了一个供应商选择提供的标准属性集。
· 消息的主体(body)包含要发送给接收应用程序的内容。每个消息接口特定于它所支持的内容类型。
JMS 为不同类型的内容提供了它们各自的消息类型,但是所有消息都派生自 Message 接口。
· StreamMessage:包含 Java 基本数值流,用标准流操作来顺序的填充和读取。
· MapMessage:包含一组名/值对;名称为 string 类型,而值为 Java 的基本类型。
· TextMessage:包含一个 String。
· ObjectMessage:包含一个 Serializable Java 对象;能使用 JDK 的集合类。
· BytesMessage:包含未解释字节流: 编码主体以匹配现存的消息格式。
· XMLMessage: 包含XML内容。扩展TextMessage,XMLMessage 类型的使用,使得消息过滤非常便利

5.消息确认模式

 AUTO_ACKNOWLEDGE:自动确认模式。一旦接收方应用程序的方法调用从处理消息处返回,会话对象就会确认消息的接收。
· CLIENT_ACKNOWLEDGE:客户端确认模式。会话对象依赖于应用程序对被接收的消息调用一个acknowledge()方法。一旦这个方法被调用,会话会确认最后一次确认之后所有接收到的消息。这种模式允许应用程序以一个调用来接收,处理并确认一批消息。注意:在管理控制台中,如果连接工厂的Acknowledge Policy(确认方针)属性被设置为"Previous"(提前),但是你希望为一个给定的会话确认所有接收到的消息,那么就用最后一条消息来调用acknowledge()方法。
· DUPS_OK_ACKNOWLEDGE:允许副本的确认模式。一旦接收方应用程序的方法调用从处理消息处返回,会话对象就会确认消息的接收;而且允许重复确认。在需要考虑资源使用时,这种模式非常有效。注意:如果你的应用程序无法处理重复的消息的话,你应该避免使用这种模式。如果发送消息的初始化尝试失败,那么重复的消息可以被重新发送。

6.JMS的体系结构

JMS应用由以下几部分组成:

JMS provider :是一个消息系统,它实现了JMS 接口并提供管理和控制的功能。

JMS clients :是用Java语言写的一些程序和组件,它们产生和使用消息。

Messages :是在JMS clients之间传递的消息的对象。

Administered objects :是由使用JMS clients 的人生成的预选设置好的JMS 对象。有两种这样的对象:destinations和connection factories。

2.2. Message机制

JMS规范制定了两种Message机制:point-to-point和publish/subscribe。

2.2.1 point-to-point

point-to-point (PTP) 的产品和应用是建立在message queues, senders和receivers概念上的。 每一个message发送到某一个特定的queue, 然后接收客户从queue 里面提取messages。 Queues里保存所有发给接收客户的messages,直到messages被提供了或过期。

应该注意:

1.每一个message只有一个使用者。

2.一个message的sender和receiver没有时间上的依赖关系。无论sendere有没有在运行,Receiver都可提取message。

3.Receiver完成对message处理这后,发出确认。

当你所发出的每一个消息必须由一个使用者成功处理的情况下,使用 PTP messaging机制。

2.2.2 publish/subscribe

在publish/subscribe (pub/sub)产品或应用中, 客户发送messages到一个topic。Publishers和subscribers通常是匿名的并且可以动态发布或订阅。系统负责分发从多个publishers来的同一个topic的messages。当messages 分发到了所有目前的subscribers,Topics就不再保留他们。

Pub/sub messaging有如下的特点:

1.每一个message可以有多个使用者;

2.Publishers和subscribers在时间上有依赖关系。一个订阅了某一个topic的客户,只能使用在它生成订阅之后发布的message, 并且subscriber必须一直保持活动状态。

JMS API允许客户生成持久性的订阅,从而在某种程度上放宽了这种时间上的依赖关系, 提高了灵活性处可靠性。

2.2.3 Messaging的使用

Messaging本生是asynchronous的,使message的使用者之间没有时间上的依赖关系。但是,JMS规范给出了更精确的定义,使Message可以以两种方式被使用:

1.Synchronously:subscriber或receiver可以能过调用receive方法显示地从destination上提取message。Receive方法在收到一个 message后结束,或当message 在一定的时间限制内没有收到时超时结束。

2.Asynchronously:客户可以为某一个使用者注册一个message listener。message listener和event listener很相似。当一个message到达了destination, JMS provider通过调用listener的onMessage方法将message传递过去,由onMessage方法负责处理message。

一个JMS应用由以下几个模块组成:

3.1. Administered Objects

JMS应用的destinations和connection factories最后是通过管理而不是编程来使用,因为不同的provider使用他们的方法不一样。

JMS 客户应该使用同一的接口得到这些objects,从而使用JMS应用可以运行在不同provider上,而不需要修改或修改很少。通常管理员在JNDI上设置administered objects, 然后JMS clients 在JNDI上look up这些对象。

3.1.1 Connection Factories:

connection factory 是client用来生成与provider的connection的对象。connection factory封装了一套由管理员定义的connection configuration参数。每个connection factory 是一个QueueConnectionFactory 或 TopicConnectionFactory接口的实例。

在JMS 客户程序中, 通常先执行connection factory 的JNDI API lookup。

 

常见Java开源JMS消息中间件及特性简介:

mom4j是一个完全实现JMS1.1规范的消息中间件并且向下兼容JMS1.0与1.02.它提供了自己的消息处理存储使它独立于关系数据与语言,所以它的客户端可以用任何语言开发.

OpenJMS

OpenJMS是一个开源的JavaMessage Service API 1.0.2 规范的实现,它包含有以下特性:

  *. 它既支持点到点(point-to-point)(PTP)模型和发布/订阅(Pub/Sub)模型。

  *. 支持同步与异步消息发送

  *. JDBC持久性管理使用数据库表来存储消息

  *. 可视化管理界面。

  *. Applet支持。

  *. 能够与Jakarta Tomcat这样的Servlet容器结合。

  *. 支持RMI, TCP, HTTP 与SSL协议。

  *. 客户端验证

  *. 提供可靠消息传输、事务和消息过滤

  UberMQ

  UberMQ完全实现了Java Message Service 规范。UberMQ是因为现有的许多JMS提供商已经违背了分布式计算的核心原则:快速与简单而开发的。

  Hermes JMS

  利用它提供的Swing UI可以很好的实现监控JMS providers。

  ActiveMQ

  ActiveMQ是一个开放源码基于Apache2.0 licenced 发布并实现了JMS 1.1。它能够与Geronimo,轻量级容器和任Java应用程序无缝的给合。

  Somnifugi

  Somnifugi使得工作在同一个java虚拟机中的线程能实现消息互发。

  MantaRay

  MantaRay基于peer-2-peer 技术。它具有以下特性:

  1.它既支持点对点(point-to-point)的域,又支持发布/订阅(publish/subscribe)类型的域。

  2.并且提供对下列类型的支持:经认可的消息传递,事务型消息的传递,一致性消息和具有持久性的订阅者支持。

  3.消息过滤体制。

  4.能与WebLogic and WebSphere 给合。

  5.支持TCP, UDP 与 HTTP传输协。

  Presumo

  Presumo也是一个实现Java Message Service API的JMS消息中间件。

  JORAM

  JORAM一个类似于openJMS分布在ObjectWeb之下的JMS消息中间件。

  JMS4Sdivad

  JMS4Sdivad是一个消息系统.它部分地实现了Java消息服务(JMS) API.

分享到:
评论

相关推荐

    JMS 简介以及Weblogic配置JMS图解

    JMS 简介以及Weblogic配置JMS图解

    jms简介.pdf

    jms简介.pdf....

    消息中间件原理及JMS简介

    消息中间件原理及JMS简介 本文介绍了企业中间件的类型,消息中间件原理及JMS的相关介绍,对于想要进一步学习的人员很有帮助

    jMS简介和解析.doc

    jMS简介和解析.doc

    JMS简介(ActiveMQ)

    Java Messsage Service Java消息服务 为Java应用程序提供了完整的异步消息服务机制。 JMS源于企业应用对于消息中间件的需求,使...JMS有四个组成部分:JMS服务提供者、消息管理对象、消息的生产者消费者和消息本身。

    JMS简介 Java Message Service

    JMS(Java Message Service)是访问企业消息系统的标准API,它便于消息系统中的Java应用程序进行消息交换,并且通过提供标准的产生、发送、接收消息的接口简化企业应用的开发。

    JMS学习笔记(一)——JMS简介安装ActiveMQ

    NULL 博文链接:https://yuxisanren.iteye.com/blog/1912587

    jms培训教程打包下载

    jms JMS规范培训教程 jms简介 jms JMS规范培训教程 jms简介jms JMS规范培训教程 jms简介

    JMS简介与ActiveMQ实战代码分享

    主要介绍了JMS简介与ActiveMQ实战代码分享,具有一定借鉴价值,需要的朋友可以参考下

    JNDI,JTA和JMS简介

    主要介绍了JNDI,JTA和JMS的相关内容,包括中文释义,概念解释等,需要的朋友可以了解下。

    jms-study.zip_jms_server jms

    jms简介 从基础开始描述了java message server的使用过程,这是很棒的基础东西哦

    NCV6X-信息交换平台技术红皮书

    1.3 JMS简介 60 1.3 JMS Client消息交互图 62 1.5解决方案 62 2.JMS传输模式 64 3. JMS Client For NC6.0 65 4 大文件传输模式 85 附录 86 1发送结果错误码 86 2 K系统自定义项目档案样本defdoc.xml 89 常见问题 90

    外部交换平台操作手册.zip

    加密类注册 56 第七章 扩展 57 第八章 JMS及大文件传输模式 59 1信息交换平台异步通信解决方案 59 1.1信息交换平台现状及存在的问题 59 1.2需求分析 59 1.3 JMS简介 60 1.3 JMS Client消息交互图 62 1.5解决方案 62...

    李腾飞]JMS与MDB简介.pdf

    李腾飞]JMS与MDB简介.pdf

    Spring in Action(第2版)中文版

    10.1jms简介 10.1.1构建jms 10.1.2介绍jms的优点 10.1.3在spring中安装activemq 10.2协同使用jms和spring 10.2.1处理冗长失控的jms代码 10.2.2使用jms模板 10.2.3转换消息 10.2.4将spring的网关支持类应用于...

    Spring in Action(第二版 中文高清版).part2

    10.1 JMS简介 10.1.1 构建JMS 10.1.2 介绍JMS的优点 10.1.3 在Spring中安装ActiveMQ 10.2 协同使用JMS和Spring 10.2.1 处理冗长失控的JMS代码 10.2.2 使用JMS模板 10.2.3 转换消息 10.2.4 将Spring的网关...

    Spring in Action(第二版 中文高清版).part1

    10.1 JMS简介 10.1.1 构建JMS 10.1.2 介绍JMS的优点 10.1.3 在Spring中安装ActiveMQ 10.2 协同使用JMS和Spring 10.2.1 处理冗长失控的JMS代码 10.2.2 使用JMS模板 10.2.3 转换消息 10.2.4 将Spring的网关...

    JMS ActiveMQ

    MQ简介、JMS基础、ActiveMQ基础应用、ActiveMQ高级特性

Global site tag (gtag.js) - Google Analytics