什么是JMS

JMS(Java Message Service) 即Java消息服务。它提供标准的产生、发送、接收消息的接口简化企业 应用的开发。它是J2EE规范的一部分,定义的接口标准,针对不同的厂商有不同的实现库。

JMS原型

JMS的原型是以MOM为基准, 进行组件的。 程序A 是消息生产者, 将消息发送到 MOM 服务器。程序B是消息消费者,负责从MOM服务器(队列服务器)那里接收消息。

其中JMS 有两种消息通信模型:点到点(point-to-point)(P2P)模型和发布/订阅(Pub/Sub)模型.

P2P 模型规定了一个消息只能有一个接收者;

对于点到点模型,消息生产者产生一个消息后,把这个消息发送到一个Queue(队列)中,然后消息接收者再从这个Queue中读取,一旦这个消息被一个接收者读取之后,它就在这个Queue中消失了,所以一个消息只能被一个接收者消费。

Pub/Sub 模型允许一个消息可以有多个接收者。
   
    与点到点模型不同,发布/订阅模型中,消息生产者产生一个消息后,把这个消息发送到一个Topic中,这个Topic可以同时有多个接收者在监听,当一个消息到达这个Topic之后,所有消息接收者都会收到这个消息。

简单的讲,点到点模型和发布/订阅模型的区别就是前者是一对一,后者是一对多。

JMS 应用

JMS 应用程序由一下几部分组成:

  • JMS客户端:发送和接收消息的java程序语言

  • JMS提供商:基于JMS规范的实现库,如JBOSS的 HornetQ ,apache的activeMQ等

  • JMS消息:实体对象,它是一个序列化对象,将传递的消息内容实例化成一个对象,在客户端和服务器之间传递。

  • JMS托管对象:托管对象是一些预配置类,如 ConnectionFactory,这些类通常是一些重类,只需被实例化一次或者使用池化技术来管理。在实际应用中,通常都是交给容器管理,客户端通过JNDI来取得相应的对象。 再测试阶段,基于环境限制,可以自行实例化对象(产品环境中 不介意这么做)

JMS 接口规范

JMS 基于一系列通用的消息概念。每个JMS 消息域—PTP 和Pub/Sub—也为这些概念定义了各自的接口集。JMS 通用接口提供了一个独立于PTP 和Pub/Sub 消息域的域视图。鼓励JMS 客户端程序员使用这些接口来创建他们的客户端程序。

  • ConnectionFactory——客户端使用这个被管理对象来创建一个Connection。

  • Connection——一个到JMS 提高商的活动连接。

  • Destination——封装了消息目的地标识的被管理对象。

  • Session——一个用于发送和接收消息的单线程上下文。

  • MessageProducer——一个由Session 创建用于往目的地发送消息的对象。

  • MessageConsumer——一个由Session 创建用于接收发送到目的地的消息的对象。

JMS介绍【转载】的更多相关文章

  1. 消息中间件和JMS介绍

    在一个公司创立初期,他可能只有几个应用,系统之间的关联也不是那么大,A系统调用B系统就直接调用B提供的API接口:后来这个公司做大了,他一步步发展有了几十个系统,这时候A系统要调用B系统的接口,但是B ...

  2. JMS介绍:我对JMS的理解和认识

    [ZT]JMS介绍:我对JMS的理解和认识 转自:http://blog.csdn.net/KimmKing/archive/2011/06/30/6577021.aspx,感谢作者KimmKing ...

  3. Jms学习篇一:JMS介绍

    1.JMS介绍: JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API JMS是一种与厂商无关的 API,用来访问 ...

  4. 消息中间件和JMS介绍(一)

    在一个公司创立初期,他可能只有几个应用,系统之间的关联也不是那么大,A系统调用B系统就直接调用B提供的API接口:后来这个公司做大了,他一步步发展有了几十个系统,这时候A系统要调用B系统的接口,但是B ...

  5. VPN理论简单介绍(转载)

    标签:VPN理论简单介绍 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://lvnian.blog.51cto.com/715528 ...

  6. JMS介绍入门大白话版

    以下内容转自: http://setting.iteye.com/blog/1097767 ------------------------------------------------------ ...

  7. Linux各目录及每个目录的详细介绍(转载)

    [常见目录说明] 目录 /bin 存放二进制可执行文件(ls,cat,mkdir等),常用命令一般都在这里. /etc 存放系统管理和配置文件 /home 存放所有用户文件的根目录,是用户主目录的基点 ...

  8. python正则表达式re模块详细介绍--转载

    本模块提供了和Perl里的正则表达式类似的功能,不关是正则表达式本身还是被搜索的字符串,都可以是Unicode字符,这点不用担心,python会处理地和Ascii字符一样漂亮. 正则表达式使用反斜杆( ...

  9. linux下各文件夹的结构说明及用途介绍(转载)

    详细介绍文档 转载文章路径 /bin:二进制可执行命令. /dev:设备特殊文件. /etc:系统管理和配置文件. /etc/rc.d:启动的配 置文件和脚本. /home:用户主目录的基点,比如用户 ...

随机推荐

  1. java基础-servlet-2:生命周期

    1.加载(class load) 2.实例化 3.init() 4.doGet() 5.destroy 只有一个对象存在于服务端提供服务.再次访问,不会再起新对象.

  2. JAVA正则表达式:Pattern类与Matcher类详解(转)

    java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包.它包括两个类:Pattern和Matcher Pattern 一个Pattern是一个正则表达式经编译后的表 ...

  3. codeforces 83 D. Numbers

    题意: 给出l,r,k,(1 ≤ l ≤ r ≤ 2·109, 2 ≤ k ≤ 2·109) 求在区间[l,r]内有多少个数i满足 k | i,且[2,k-1]的所有数都不可以被i整除 首先,如果k不 ...

  4. Flex air修改外部xml文件 (转)

    AIR的文件操作不难,看完教程应该可以满足你对文件的所有基本操作.这篇教程主要以实际操作中遇到的情况来讲解 我们想想文件操作都会有什么内容,无非是创建,修改,删除,移动,拷贝.在这个过程中我们会涉及到 ...

  5. .net 环境下get 获取页面出现乱码问题解决

    不多说了,先上代码: /// <summary> /// 获取页面内容 /// </summary> /// <param name="Url"> ...

  6. Unity3d之json解析研究

    Unity3d之json解析研究     json是好东西啊!JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式      JSON简单易用,我要好好研究一下 ...

  7. css全局样式

      @charset"utf-8"; *{margin:0;padding:0;} //去默认内外边距的简易写法 body,div,dl,dt,dd,ul,ol,li,h1,h2, ...

  8. LeetCode 328. Odd Even Linked List

    Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...

  9. Linux下创建新用户

    useradd -h查询使用方法 useradd -g sysadmin -d /home/devops -m -c "DevOps Installation User" -s / ...

  10. Maven如何添加Oracle驱动包到本地仓库中

    2016-05-28 http://note.youdao.com/yws/public/redirect/share?id=54cbe79c8948113ef492f946f7e027c8& ...