一 什么是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总结的更多相关文章

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

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

  2. (jms)ActiveMQ 安装配置.

    前言 ActiveMQ他是Apache出品的一个JMS提供者,管理会话和队列,运行在JVM下,支持多种语言,如JAVA,C++,C#,应用协议: OpenWire,Stomp REST,WS Noti ...

  3. JMS学习之路(一):整合activeMQ到SpringMVC

    JMS的全称是Java Message Service,即Java消息服务.它主要用于在生产者和消费者之间进行消息传递,生产者负责产生消息,而消费者负责接收消息.把它应用到实际的业务需求中的话我们可以 ...

  4. activemq和jms是种什么关系

    JMS是一个用于提供消息服务的技术规范,它制定了在整个消息服务提供过程中的所有数据结构和交互流程. 而activemq则是消息队列服务,是面向消息中间件(MOM)的最终实现,是真正的服务提供者. jm ...

  5. 深入浅出JMS(一) JMS基本概念

    摘要:The JavaMessage Service (JMS) API is a messaging standard that allows application components base ...

  6. JMS开发步骤和持久化/非持久化Topic消息

    ------------------------------------------------ 开发一个JMS的基本步骤如下: 1.创建一个JMS connection factory 2.通过co ...

  7. 深入浅出JMS(四)--Spring和ActiveMQ整合的完整实例

    第一篇博文深入浅出JMS(一)–JMS基本概念,我们介绍了JMS的两种消息模型:点对点和发布订阅模型,以及消息被消费的两个方式:同步和异步,JMS编程模型的对象,最后说了JMS的优点. 第二篇博文深入 ...

  8. 深入浅出JMS(三)--ActiveMQ简单的HelloWorld实例

    第一篇博文深入浅出JMS(一)–JMS基本概念,我们介绍了JMS的两种消息模型:点对点和发布订阅模型,以及消息被消费的两个方式:同步和异步,JMS编程模型的对象,最后说了JMS的优点. 第二篇博文深入 ...

  9. 深入浅出JMS(二)--ActiveMQ简单介绍以及安装

    现实的企业中,对于消息通信的应用一直都非常的火热,而且在J2EE的企业应用中扮演着特殊的角色,所以对于它研究是非常有必要的. 上篇博文深入浅出JMS(一)–JMS基本概念,我们介绍了消息通信的规范JM ...

  10. JMeter之JMS接口测试

    JMeter是Apache开发的一款小巧易用的开源性能测试工具,由java语言开发.JMeter不仅免费开源而且功能强大.易于扩展,如果有一定Java开发基础的话还可以在JMeter上做扩展开发新的插 ...

随机推荐

  1. css学习归纳总结(二) 转

    原文地址:css学习归纳总结(二) 标签与元素 <p>标签和p元素有什么区别呢?大多数时候他们表示的是同一样东西,但仍有细微的区别.<p>.<div>等指的是HTM ...

  2. C——数组下标与间址运算符

    只说一句,数组下标与间址运算符*是等价的,即:a[i] = *(a+i),看代码: int main(int argc, char* argv[]) { ] = {, , , , }; int i; ...

  3. 无废话WCF入门教程六[一个简单的Demo]

    一.前言 前面的几个章节介绍了很多理论基础,如:什么是WCF.WCF中的A.B.C.WCF的传输模式.本文从零开始和大家一起写一个小的WCF应用程序Demo. 大多框架的学习都是从增.删.改.查开始来 ...

  4. 用C#实现的内存映射

    当文件过大时,无法一次性载入内存时,就需要分次,分段的载入文件 主要是用了以下的WinAPI LPVOID MapViewOfFile(HANDLE hFileMappingObject, DWORD ...

  5. SYN攻击

    一.TCP握手协议 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接. 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服 ...

  6. APC注入(Ring3层)

    /* 步骤: 1.提权(GrantDebugPrivileges) (1)获得令牌token,OpenThreadToken(),OpenProcessToken () WINADVAPI BOOL ...

  7. asp.net中关于Microsoft 信息完整性、隐私性等集成信息安全服务服务 integrated security=SSPI

    string strConn=@"server=(local)\SQLExpress;database=AdventureWorks;integrated security=SSPI&quo ...

  8. LeetCode之Unique Binry Search Trees

    4月份很快就过半了,最近都在看WPF,有点落伍了...本来想写一点读书笔记的,还没想好要怎么写.所以为了能够达到每月一篇博客的目标,今天先说一个LeetCode上的面试题:Unique Binary ...

  9. [收藏]谷歌htm/css规范

    通用样式规范 协议 省略图片.样式.脚本以及其他媒体文件 URL 的协议部分(http:,https:),除非文件在两种协议下都不可用.这种方案称为 protocol-relative URL,好处是 ...

  10. HBase查找一条数据的过程

    HBase中的Client如何路由到正确的RegionServer 在HBase中,大部分的操作都是在RegionServer完成的,Client端想要插入,删除,查询数据都需要先找到相应的 Regi ...