JMS总结
一 什么是JMS
1.JMS,Java Message Service,Java消息服务是一种可以实现异步通讯的消息中间件MOM(Message Oriented Middleware,面向消息的中间件)。
2. JMS实质上是一系列的接口规范,任何实现了JMS标准的MOM都可以作为消息的中介,完成消息的存储转发。
3.另外,Apache出品的ActiveMQ 是开源的JMS中的一种。
二 为什么要用JMS
举个简单的例子。如果朋友打电话过来,你手机关机了,那你就接不到。但是他可以发短信,这样你开机时,就可以接到信息。这就是异步通讯,而JMS的作用就如同短信。

图I JMS通讯示意图
三 JMS的作用
1.提供消息灵活性
应用程序A与应用程序B通过使用JMS的API发送消息进行通信。应用程序A将消息发给JMS,如果此时网络不可用,JMS会存储消息,直到连接变得可用时,再将消息转发给应用程序B。同时这还防止了应用程序A因为等待应用程序B检索消息而出现阻塞。
2.松散耦合
应用程序A和应用程序B是彼此无关的,可以替换掉A或B。
四 JMS的两种消息模型
JMS有两种模型:点到点(P2P)和发布/订阅(Pub/Sub)。

图II JMS的两种模型
1.点到点模型
如图II,ClientA/ClientC、ClientA/ClientD就属于点到点的方式。
其特点是:
①每条消息只有一个消费者。如果一条消息被消息者接收,那么其他的消费者就不能得到这条消息了。
②生产者在发送消息后,只要消息未过期,消费者可以在任意的时刻接收。
③消费者必须确认对消息的接收。否则JMS服务提供者会认为该消息没有被接收,那么这条消息仍然可以被其他人接收。
④非持久的消息最多只发送一次。即出现JMS服务提供者因宕机等原因造成非持久信息的丢失,或者队列中的消息过期未被接收的情况。
⑤持久的消息严格发送一次。可以将比较重要的消息设置为持久化的消息,持久化后的消息不会因为JMS服务提供者的故障或者其他原因造成消息丢失。
2.发布/订阅模型
如图II,ClientBh和ClientE、ClientF之间就属于发布/订阅方式。
其特点是:
① 每个消息都可以有多个订阅者。
②订阅者只能消费他们订阅之后出版的消息。这要求订阅者必须先运行并保持为活动状态,再等待发布者的运行。
JMS总结的更多相关文章
- Java消息队列--JMS概述
1.什么是JMS JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送 ...
- (jms)ActiveMQ 安装配置.
前言 ActiveMQ他是Apache出品的一个JMS提供者,管理会话和队列,运行在JVM下,支持多种语言,如JAVA,C++,C#,应用协议: OpenWire,Stomp REST,WS Noti ...
- JMS学习之路(一):整合activeMQ到SpringMVC
JMS的全称是Java Message Service,即Java消息服务.它主要用于在生产者和消费者之间进行消息传递,生产者负责产生消息,而消费者负责接收消息.把它应用到实际的业务需求中的话我们可以 ...
- activemq和jms是种什么关系
JMS是一个用于提供消息服务的技术规范,它制定了在整个消息服务提供过程中的所有数据结构和交互流程. 而activemq则是消息队列服务,是面向消息中间件(MOM)的最终实现,是真正的服务提供者. jm ...
- 深入浅出JMS(一) JMS基本概念
摘要:The JavaMessage Service (JMS) API is a messaging standard that allows application components base ...
- JMS开发步骤和持久化/非持久化Topic消息
------------------------------------------------ 开发一个JMS的基本步骤如下: 1.创建一个JMS connection factory 2.通过co ...
- 深入浅出JMS(四)--Spring和ActiveMQ整合的完整实例
第一篇博文深入浅出JMS(一)–JMS基本概念,我们介绍了JMS的两种消息模型:点对点和发布订阅模型,以及消息被消费的两个方式:同步和异步,JMS编程模型的对象,最后说了JMS的优点. 第二篇博文深入 ...
- 深入浅出JMS(三)--ActiveMQ简单的HelloWorld实例
第一篇博文深入浅出JMS(一)–JMS基本概念,我们介绍了JMS的两种消息模型:点对点和发布订阅模型,以及消息被消费的两个方式:同步和异步,JMS编程模型的对象,最后说了JMS的优点. 第二篇博文深入 ...
- 深入浅出JMS(二)--ActiveMQ简单介绍以及安装
现实的企业中,对于消息通信的应用一直都非常的火热,而且在J2EE的企业应用中扮演着特殊的角色,所以对于它研究是非常有必要的. 上篇博文深入浅出JMS(一)–JMS基本概念,我们介绍了消息通信的规范JM ...
- JMeter之JMS接口测试
JMeter是Apache开发的一款小巧易用的开源性能测试工具,由java语言开发.JMeter不仅免费开源而且功能强大.易于扩展,如果有一定Java开发基础的话还可以在JMeter上做扩展开发新的插 ...
随机推荐
- ElasticSearch配置说明
配置文件位于%ES_HOME%/config/elasticsearch.yml文件中. cluster.name: elasticsearch 配置集群名称,默认elasticsearch node ...
- C#获取并写入ORACLE数据库中中英文字符集问题
背景: 开发语言:C# 开发工具:VS2010 A方ORACLE数据库:中文字符集 B方ORACLE数据库:英文字符集 传递方式:webservice方式(取数据,并把取出的数据放到DataTable ...
- 对COM 组件的调用返回了错误 HRESULT E_FAIL
.net ppt转pdf时报以下错误: 对COM 组件的调用返回了错误 HRESULT E_FAIL 在服务器端打开PPT,选项--另存为--PDF,发现PowerPoint报了个错误: “无法找到打 ...
- Windows 下 pdf2word 的可用软件记录
因为用 latex 写的原稿,提交审阅的时候有 Word 版本的要求,只好找软件来转换.折腾了一整天的 Linux 下latex2html, latex2rtf 等两个曲线救国的方式来生成 Word ...
- centos 6安装epel
1.通过:https://mirrors.ustc.edu.cn/找到epel rpm包链接,这里的是 https://mirrors.ustc.edu.cn/epel/epel-release-la ...
- 前端神器Sublime Text3 常用插件&常用快捷键
Sublime Text3常用插件 使用Package Control组件安装 也可以安装package control组件,然后直接在线安装: 按Ctrl+`调出console(注:安装有QQ输入法 ...
- Redis学习笔记~实现消息队列比MSMQ更方便
什么是队列:简单的说就是数据存储到一个空间里(可以是内存,也可以是物理文件),先存储的数据对象,先被取出来,这与堆栈正好相反,消息队列也是这样,将可能出现高并发的数据进行队列存储,并按着入队的顺序依次 ...
- 驱动插ring3线程执行代码
近日有在写一个小东西 需要在内核态中运行一个WIN32程序 之前提到的插入APC可以满足部分要求 但是一到WIN7 x86平台下就崩溃了WIN7下只能插入第三方的进程 一插入系统进程就崩溃,但是这样满 ...
- 有关利用python获取网页, 以及KDD近几年论文标题与摘要链接
最近一直在看KDD的论文,不过,由于老师并没有什么合理的方向性,所以考虑把kdd中的大部分内容都利用python将所有标题.摘要获取下来. 还有一个原因在于,看acm上的摘要,都只显示了两行,再看多点 ...
- Apriori on MapReduce
Apiroi算法在Hadoop MapReduce上的实现 输入格式: 一行为一个Bucket 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 34 36 38 ...