JMS简单描述:

JMS即Java消息服务(Java Message Service),是一个Java平台中面向消息中间件的API,用于在两个应用程序之间或分布式系统中发送、接受消息,从而进行异步通信。JMS是一个与厂商无关的API,绝大多数消息中间件供应商都对JMS提供支持。

JMS的优势:

异步:JMS天生就是异步的,客户端获取消息的时候,不需要主动发送请求,消息会自动发送给可用的客户端。

可靠:JMS保证消息只会传递一次。

JMS消息传递模型有2种:

1.点对点消息传递模型(P2P):

在点对点消息传递模型中,应用程序由消息队列、发送者、接收者组成。每一个消息发送给一个指定的消息队列,该队列保存了所有发送给它的消息(被接收者消费掉和已过期的消息除外)。

点对点消息传递模型特性如下:

每个消息只有一个接收者;

消息发送者和接收者并没有时间依赖性;

当接收者收到消息时,会发送确认收到通知(acknowledgement)

2.发布/订阅消息传递模型(pub/sub):

在发布/订阅消息传递模型中,发布者发布一个消息,该消息通过topic传递给所有订阅者客户端。

发布/订阅消息传递模型特性如下:

一个消息可以传递给多个客户端;

发布者和订阅者有时间依赖性,只有当客户端创建订阅后才能接收消息。为了缓和这种严格的时间依赖性,JMS允许客户端创建一个可持久化的订阅(durableSubscriber),这样,客户端创建订阅后还能接收到创建订阅前发布者已经发布的消息。

在JMS中,消息的接收可以使用同步和异步两种方式:

同步:消息订阅者可以调用receive()方法,从而以同步的方式接收消息,receive()方法在消息到达之前会一直阻塞,直到指定的时间。

异步:使用异步方式接收消息的话,消息订阅者需要注册一个消息监听器(实现MessageListener接口),只要消息到达,JSM服务提供者就会通过调用监听器的onMessage()方法来递送消息

JMS编程接口:

1.javax.jms.ConnectionFactory接口,用来产生Connection连接对象

2.javax.jms.Connection接口,用来产生Session会话对象。Connection接口有2个子接口:QueueConnection和TopicConnection。

3.javax.jms.Session接口,用来创建Destination目的地对象和MessageProducer生产者对象或者MessageConsumer消费者对象。Session接口也有2个子接口:QueueSession和TopicSession。

MessageProducer接口有2个子接口:QueueSender和TopicPublisher,MessageConsumer接口也有2个子接口:QueueReceiver和TopicSubscriber。以上两个子接口分别对应P2P消息传递模型和Pub/Sub消息传递模型。

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. JMS介绍入门大白话版

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

  6. JMS介绍【转载】

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

  7. JMS学习一(JMS介绍)

    一.JMS是个什么鬼 1.百度百科解释:JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之 ...

  8. JMS学习(一)基本概念

    这两天面试了一两个公司,由于简历中的最近一个项目用到了JMS,然而面试官似乎对这个很感兴趣,所以都被问到了,但可惜的是,我除了说我们使用了JMS外,面对他们提出的一些关于JMS的问题,我回答得相当差, ...

  9. 使用activeMQ实现jms

    一:jms介绍         jms说白了就是java message service,是J2EE规范的一部分,跟jdbc差不多,sun只提供了接口,由各个厂商(provider)来进行具体的实现, ...

随机推荐

  1. 编写高质量代码改善C#程序的157个建议——建议1:正确操作字符串

    最近拜读了陆敏技老师的<编写高质量代码改善C#程序的157个建议>,感觉不错,决定把笔记整理一遍. 建议1: 正确操作字符串 字符串应该是所有编程语言中使用最频繁的一种基础数据类型.如果使 ...

  2. GlobalAlloc()和malloc()、HeapAlloc()

    两者都是在堆上分配内存区.  malloc()是C运行库中的动态内存分配函数,WINDOWS程序基本不使用了,因为它比WINDOWS内存分配函数少了一些特性,如,整理内存.  GlobalAlloc( ...

  3. 综合学生信息管理系统(JSP+JDBC)

    原创 通过JSP+JDBC制作一个简单的操作数据库中表信息的系统. 总体界面如下,一共有5个功能块. 功能一:列出全部学生 功能二:按条件查询学生 功能三:新添加学生 功能四:按条件删除学生 功能五: ...

  4. .net IAsyncResult 异步操作

    //定义一个委托 public delegate int DoSomething(int count); //BeginInvoke 的回调函数 private static void Execute ...

  5. attachEvent 与 addEventListener 的监听

    说到 attachEvent 与 addEventListener 的事件必然会提到  浏览器的判断,因为attachEvent只适用于于IE 先来看看常用的浏览器的判断 //判断浏览器类型 if(n ...

  6. 【C#】CLR

    CLR是如何工作的 借用维基百科上的一副图来描述CLR的运行流程: 从源代码到应用程序执行CLR主要做了以下工作: 将源代码编译成托管模块 托管模块是一个标准的 32 位 Microsoft Wind ...

  7. centos7下git的安装和配置

    git的安装: yum 源仓库里的 Git 版本更新不及时,最新版本的 Git 是 1.8.3.1,但是官方最新版本已经到了 2.9.2.想要安装最新版本的的 Git,只能下载源码进行安装. 1. 查 ...

  8. 以太坊系列之十二: solidity变量存储

    solidity中变量的存储 变量存储主要分为两个区域,一个是storage(对应指定是SLOAD,SSTORE),一个是Memory(MLOAD,MSTORE), 这和普通编程语言的内存模型是不一样 ...

  9. LOJ#10065. 「一本通 3.1 例 2」北极通讯网络

    题目链接:https://loj.ac/problem/10065 题目描述 原题来自:Waterloo University 2002 北极的某区域共有 nnn 座村庄,每座村庄的坐标用一对整数 ( ...

  10. vs2015+opencv3.3.1 实现 c++ 彩色高斯滤波器(Gaussian Smoothing, Gaussian Blur, Gaussian Filter)

    //高斯滤波器 https://github.com/scutlzk#include <opencv2\highgui\highgui.hpp> #include <iostream ...