1. 基本概念

  • JMS:Java Message Service, Java消息服务,是Java EE中的一个技术。
  • JMS规范:JMS定义了Java中访问消息中间件的接口,并没有给予实现,实现JMS的接口的消息中间件称为JMS Provider,例如ActiveMQ。
  • JMS message:JMS消息,其由一下三部分组成:
    1. 消息头:每个消息头字段都有相应的gettersetter方法;
    2. 消息属性:如果需要除消息头字段以外的值,那么可以使用消息属性;
    3. 消息体:封装具体的消息数据。
  • JMS producer:消息生产者,创建和发送JMS消息的客户端应用。
  • JMS consumer:消息消费者,接收和处理JMS消息的客户端应用。

    消息的消费者可以采用以下两种方法之一:

    1. 同步消费:通过调用consumerreceives方法从destination中显示提取消息,receive方法可以一直阻塞到消息到达(或设定的等待超时时间);
    2. 异步消费:客户端可以为consumerJMS Provider中注册一个消息监听器,以定义在消息到达时所采取的动作。
  • JMS Browser:一个消息的观察者,只看消息,不会对消息的状态造成影响。
  • JMS domains:消息传递域,JMS规范中定义了两种消息传递域:点对点消息传递域(point-to-point,简写成PTP)和发布/订阅消息传递域(publish/subscribe,简写成pub/sub)。
    1. PTP消息传递域的特点如下:

      • 每个消息只能有一个consumer,但一个Queue可以有多个consumer
      • 消息的生产者和消费者之间没有时间上的相关性。也就是说无论消费者在生产者发送消息的时候是否处于运行状态,它都可以提取消息;
      • 在PTP消息传递域中,Destination被称为队列(Queue)

    2. PUB/SUB消息传递域的特点如下:

      • 每个消息可以有多个consumer
      • Producerconsumer之间有时间上的相关性。Subscribe一个Topicconsumer只能消费自它subscribe之后发布的消息。JMS规范允许客户创建持久订阅,这在一定程度上放松了时间上的相关性要求。持久订阅允许consumer消费它在未激活状态时,由producer发布的消息;
      • 在PUB/SUB消息传递域中,Destination被称为主题(Topic)

2. JMS开发概念

  • Connection Factory:连接工厂,用来创建连接对象,以连接到JMS的provider;
  • JMS Connection:封装了客户与JMS提供者之间的一个虚拟的连接;
  • JMS Session:是生产和消费消息的一个单线程上下文;

    会话用于创建消息生产者(producer)、消息消费者(consumer)、消息目的地(Destination)消息(message)等。会话提供了一个事务性的上下文,在这个上下文中,一组发送和接收被组合到了一个原子操作中;
  • Destination:消息发送到的目的地;
  • Acknowledge:签收;
  • Transaction:事务;
Session javax.jms.Connection.createSession(boolean transacted, int acknowledgeMode) throws JMSException
  • JMS Client:用来收发消息的Java应用;
  • Non-JMS Client:使用JMS provider本地API写的应用,用来替换JMS API实现收发消息的功能,通常会提供其他的一些特性,比如:CORBA、RMI等;
  • Administered Objects:预定义的JMS对象,通常在provider规范中有定义,提供给JMS客户端来访问,比如: ConnectionFactory和Destination;

003.JMS概述的更多相关文章

  1. Java消息队列--JMS概述

    1.什么是JMS JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送 ...

  2. Java消息队列——JMS概述

    一.什么是JMS JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送 ...

  3. ActiveMQ基础教程JMS概述

    什么是JMS JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息 ...

  4. JMS概述

    [1.面向消息的中间件]顾名思义,面向消息的中间件就是通过使用消息(而不是命令)将企业内的组件连接起来的系统.例如库存系统可能会与工资和会计系统进行通信,如果使用面向消息的中间件将他们连接在一起,就可 ...

  5. 李洪强漫谈iOS开发[C语言-003]-开发概述程序设计语言

    李洪强iOS开发之程序设计语言 printf 是打印的意思- 格式化输出 f: format 格式化 C语言编译器 编译器的功能就是将高级语言的源代码,翻译成机器可以识别的二进制文件就是可执 行文件- ...

  6. Welogic中的JMS

    WebLogic JMS 概述 企业消息传递系统使得应用程序能够通过消息的交换与其他系统之间进行通信.消息是包含协调不同应用程序之间通信所需信息的请求.报告和/或事 件.消息提供了提取级别,使您能够从 ...

  7. 消息中间件与JMS标准

    初识消息中间件 维基百科上对于消息中间件的定义是"Message-oriented middleware(MOM) is software infrastructure focused on ...

  8. JMS ActiveMQ研究文档

    1. 背景 当前,CORBA.DCOM.RMI等RPC中间件技术已广泛应用于各个领域.但是面对规模和复杂度都越来越高的分布式系统,这些技术也显示出其局限性:(1)同步通信:客户发出调用后,必须等待服务 ...

  9. JMS异步消息机制

    企业消息系统 Java Message Service 是由 Sun Microsystems 开发的,它为 Java 程序提供一种访问 企业消息系统 的方法.在讨论 JMS 之前,我们分来析一下企业 ...

随机推荐

  1. Makefile经典教程(转)

    转自:http://blog.csdn.net/ruglcc/article/details/7814546/ makefile很重要 什么是makefile?或许很多Winodws的程序员都不知道这 ...

  2. Git+VS2015修改提交代码以及解决冲突

    第一步:前提我们已经讲代码从git上clone(可以看我的GIt篇)下来,创建自己的开发分支.我们在自己本地的分支上开发. 看到右下角有一个develop那是我自己建立的开发的分支,现在点击devel ...

  3. Golden Gate 检查点

    检查点是记录读写位置信息,在恢复时候要用到,保证事务的完整性. 两种存储方式: 存放在dirchk下 存放在指定的checkpoint table Replicat: nodbcheckpoint: ...

  4. HDU 3763 CD【二分查找】

    解题思路:给出两个数列an,bn,求an和bn中相同元素的个数因为注意到n的取值是0到1000000,所以可以用二分查找来做,因为题目中给出的an,bn,已经是单调递增的,所以不用排序了,对于输入的每 ...

  5. java读取文件流和写入

    package jsoup;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStre ...

  6. Pyhton学习——Day25

    #面向对象的几个方法#1.静态方法@staticmethod,不能访问类属性,也不能访问实例属性,只是类的工具包#2.类方法:@classmethod,在函数属性前加上类方法,显示为(cls)代表类, ...

  7. HDU 1576 A/B( 逆元水 )

    链接:传送门 思路: 现在给出 n = A % 9973,n = A - A/9973×9973,已知 B|A ,设 A = Bx,可以得到如下形式的式子:Bx + 9973×y = n ,因为gcd ...

  8. 基于Linux的v4l2视频架构驱动编写

    其实,我刚开始一直都不知道怎么写驱动,什么都不懂的,只知道我需要在做项目的过程中学习,所以,我就自己找了一个关于编写Linux下的视频采集监控项目做,然后上学期刚开学的时候听师兄说,跟院长做项目,没做 ...

  9. u-boot启动代码start.S详解

    (1)定义入口.由于一个可执行的Image必须有一个入口点,并且只能有一个全局入口,通常这个入口放在ROM(Flash)的0x0地址,因此,必须通知编译器以使其知道这个入口,该工作可通过修改连接器脚本 ...

  10. https的基本原理,看完你的程序员女朋友再也不和你提分手了

    [http风险] 首先,我们来讲一下平时上网的时候,存在的风险. 初步接触过网络的同学都知道,网络上是很不安全的,尤其是各种公共场合的免费WIFI,以及手机上各种免费上网的万能钥匙.这些不安全因素会导 ...