1. JMS基本概念

JMS(Java Message Service) 即Java消息服务。它提供标准的产生、发送、接收消息的接口,简化企业应用的开发。它支持两种消息通信模型:点到点(point-to-point)(P2P)模型和发布/订阅(Pub/Sub)模型。P2P 模型规定了一个消息只能有一个接收者;Pub/Sub 模型允许一个消息可以有多个接收者。
    对于点到点模型,消息生产者产生一个消息后,把这个消息发送到一个Queue(队列)中,然后消息接收者再从这个Queue中读取,一旦这个消息被一个接收者读取之后,它就在这个Queue中消失了,所以一个消息只能被一个接收者消费。
    与点到点模型不同,发布/订阅模型中,消息生产者产生一个消息后,把这个消息发送到一个Topic中,这个Topic可以同时有多个接收者在监听,当一个消息到达这个Topic之后,所有消息接收者都会收到这个消息。

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

2.几个重要概念 

1)Destination:消息发送的目的地,也就是前面说的Queue和Topic。创建好一个消息之后,只需要把这个消息发送到目的地,消息的发送者就可以继续做自己的事情,而不用等待消息被处理完成。至于这个消息什么时候,会被哪个消费者消费,完全取决于消息的接受者。

2)Message:从字面上就可以看出是被发送的消息。它有下面几种类型:
        A)StreamMessage:Java 数据流消息,用标准流操作来顺序的填充和读取。
        B)MapMessage:一个Map类型的消息;名称为 string 类型,而值为 Java 的基本类型。
        C)TextMessage:普通字符串消息,包含一个String。
        D)ObjectMessage:对象消息,包含一个可序列化的Java 对象
        E)BytesMessage:二进制数组消息,包含一个byte[]。
        F)XMLMessage:  一个XML类型的消息。
      备注:其中最常用的是TextMessage和ObjectMessage。

3)Session:与JMS提供者所建立的会话,通过Session我们才可以创建一个Message。
4) Connection:与JMS提供者建立的一个连接。可以从这个连接创建一个会话,即Session。
5) ConnectionFactory:那如何创建一个Connection呢?这就需要下面讲到的ConnectionFactory了。通过这个工厂类就可以得到一个与JMS提供者的连接,即Conection。6)Producer:消息的生产者,要发送一个消息,必须通过这个生产者来发送。
7)MessageConsumer:与生产者相对应,这是消息的消费者或接收者,通过它来接收一个消息。
   前面多次提到JMS提供者,因为JMS给我们提供的只是一系列接口,当我们使用一个JMS的时候,还是需要一个第三方的提供者,它的作用就是真正管理这些Connection,Session,Topic和Queue等。

通过下面这个简图可以看出上面这些概念的关系。

  ConnectionFactory---->Connection--->Session--->Message
  Destination + Session------------------------------------>Producer
  Destination + Session------------------------------------>MessageConsumer

 
    那么可能有人会问: ConnectionFactory和Destination 从哪儿得到?
    这就和JMS提供者有关了. 如果在一个JavaEE环境中, 可以通过JNDI查找得到, 如果在一个非JavaEE环境中, 那只能通过JMS提供者提供给我们的接口得到了.
关于JMS入门的知识转自:http://blog.csdn.net/zhangxs_3/article/category/625599

JMS入门(一)--JMS基础相关推荐

  1. JMS入门_StepByStep

    本篇为JMS的学习笔记, 教你一步一步使用JMS,并提供一个能运行的完整的案例,可以使人达到快速入门的目的. JMS(Java Message Service),是Java消息服务,通过JMS,可以在 ...

  2. ActiveMQ入门 (三) JMS消息组成

    ActiveMQ入门 (三) JMS消息组成 文章目录 ActiveMQ入门 (三) JMS消息组成 一.JMS协议组成结构 二.JMS Message消息组成 1.JMS消息头 2.JMS消息体 1 ...

  3. python向量计算库教程_NumPy库入门教程:基础知识总结

    原标题:NumPy库入门教程:基础知识总结 视学算法 | 作者 知乎专栏 | 来源 numpy可以说是 Python运用于人工智能和科学计算的一个重要基础,近段时间恰好学习了numpy,pandas, ...

  4. class括号里的object_Python入门 类class 基础篇

    记住一句话:类是模板,而实例则是根据类创建的对象. 我初学时对类的理解是从类的字面上,可以片面的认为它是一个种类,它是相似特征的抽像,也就是相似的东西,可以把相似特征的事务抽象成一个类.(事务可以是具 ...

  5. python网络爬虫的基本步骤-python爬虫入门需要哪些基础/python 网络爬虫教程

    如何入门 Python 爬虫 入门个吊,放弃 python爬虫入门需要哪些基础 现在之所以有多的小伙伴热衷于爬虫技术,无外乎是因为爬我们做很多事情,比如搜索引擎.采集数据.广告过滤等,以Python为 ...

  6. python入门到实践-Python编程从入门到实践(基础入门)

    Python编程从入门到实践-------基础入门 1.Python中的变量 2.Python首字母大写使用title()方法,全部大写upper()方法,全部小写lower()方法 3.Python ...

  7. redis 中一个字段 修改map_Redis bitmap 位图 从入门到精通 基础 实战 妙用

    1.bitmap介绍 位图不是真正的数据类型,它是定义在字符串类型中,一个字符串类型的值最多能存储512M字节的内容 位上限:2^(9(512)+10(1024)+10(1024)+3(8b=1B)) ...

  8. spring jms 消息_Spring JMS,消息自动转换,JMS模板

    spring jms 消息 在我的一个项目中,我应该创建一个消息路由器,就像所有路由器一样,它应该从一个主题获取JMS消息并将其放入另一个主题. 该消息本身是JMS文本消息,实际上包含XML消息. 收 ...

  9. 0基础能学mysql数据库吗_mysql学习入门:零基础如何使用mysql创建数据库表?

    零基础如何自学Mysql创建数据库,是Mysql学习者必经之路,Mysql是受欢迎的关系数据库管理系统,WEB应用方面MySQL是很好的RDBMS应用软件之一.如何使用Mysql创建数据库表,打开My ...

最新文章

  1. HDU 3555 Bomb (数位DP-记忆化搜索模板)
  2. SpringCloud环境搭建
  3. linux 输入是否为数字,【shell】Linux shell 之 判断用户输入的变量是否为数字
  4. jzoj4025-找回密码【后缀自动机】
  5. 复频域求零输入响应_第十四章 动态电路的复频域分析 习题答案
  6. html5 电流效果,在HTML5 Canvas 2D上绘制云雾中的电流动画特效
  7. (13)ZYNQ AXI总线应用范围(学无止境)
  8. oracle:时间数据的处理
  9. Educational Codeforces Round 51 (Rated for Div. 2) The Shortest Statement
  10. CMU 15-213 Introduction to Computer Systems学习笔记(18) Dynamic Memory Allocation: Basic Concepts
  11. 好用的在线JSON编辑与格式化工具
  12. Web程序设计(第三版)课后答案
  13. 让你的 commit 更有价值(规范)
  14. How to debug Windows bugcheck 0x9F, parameter 3
  15. 法兰克机器人循环编程_原来可以这样编写Fanuc机器人程序!
  16. VBA代码助手,代码库收藏管理工具,代码对齐,破解Excel工程密码,设置隐藏模块
  17. bolb layer
  18. 如何搭建企业数据化运营体系?
  19. 关于switch-case的用法细节及其特殊用法
  20. 华为交换机查看网口光功率命令

热门文章

  1. 双单线激光雷达数据融合
  2. Linux下安装pymysql步骤
  3. Oracle——获取当前系统时间以及插入日期型数据(to_date的用法)
  4. [Java]打印数组的三种方式
  5. 联通NFV规划路线图:数据中心为核心 实现网元虚拟化
  6. 【MySQL】物化视图
  7. 盘点电脑速度变慢的七大原因
  8. 格式化JSON stringify 的使用
  9. 专升本——非谓语动词
  10. 王菲语法11 动词(非谓语动词)