JMS基础(2)
1. JMS基本概念
JMS(Java Message Service) ,即Java消息服务。JMS是SUN提出的旨在统一各种消息中间件(MOM)系统接口的规范。它提供标准的产生、发送、接收消息的接口, 简化企业应用的开发。
它支持两种消息通信模型:点到点(point-to-point)(P2P)模型和发布/订阅(Pub/Sub)模型。
点到点模型(P2P):消息生产者产生一个消息后,把这个消息发送到一个Queue(队列)中,然后消息接收者再从这个Queue中读取,一旦这个消息被一个接收者读取之后,它就在这个Queue中消失了。
P2P模型规定一个消息只能有一个接收者, 即: 一个消息只能被一个接收者消费。
发布/订阅模型(Pub/Sub):消息生产者产生一个消息后,把这个消息发送到一个Topic中,这个Topic可以同时有多个接收者在监听,
当一个消息到达这个Topic之后,所有消息接收者都会收到这个消息。Pub/Sub 模型允许一个消息可以有多个接收者。
总结: 简单的讲,点到点模型和发布/订阅模型的区别就是前者是一对一,后者是一对多。
2. JMS定义了2种模型:
(1) P2P: point-to-point, 即点对点消息传输模型
(2) Pub/sub: publish-subscribe, 发布订阅模型
P2P如下图所示:

如图可以看出, 一个或多个生产者发送消息, 消息m2先抵达queue, 消息m1后抵达queue, 它们一同存在于一个先进先出的queue里面, 消费者也存在一个或多个, 对queue里面的消息进行消费。但消息被随机的一个消费者消费,且仅消费一次。
点对点消息传递域的特点:
(1) 每个消息只能有一个消费者
(2) 消息的生产者和消费者之间没有时间上的相关性。
无论消费者在生产者发送消息的时候是否处于运行状态,它都可以提取消息。
在pub/sub消息模型中, 消息被广播给所有的订阅者:

特点: 每个消息可以有多个消费者。
JMS基础(2)的更多相关文章
- JMS基础(1)
1. 消息中间件: 将信息以消息的形式,从一个应用程序传送到另一个或多个应用程序. 主要特点: (1) 消息异步接收: 消息发送者不需要等待消息接收者的响应 (2) 消息可靠接收: 确保消息在中间件 ...
- JMS 基础
1. JMS基本概念 JMS(Java Message Service) 即Java消息服务.它提供标准的产生.发送.接收消息的接口简化企业应用的开发. 它支持两种消息通信模型:点到点(point-t ...
- JMS基础篇(二)
简介 异构集成是消息发挥作用的一个领域,大型公司内部可能会遇到很多的平台,Java,.net或者公司自己的平台等. 传送消息还应该支持异步机制,以提高系统整体的性能.异步传输一条消息意味着,发送者不必 ...
- JMS基础篇
首先我们需要下载 ActiveMQ:http://activemq.apache.org/. 启动 ActiveMQ 服务:解包下载的 ActiveMQ >进去其bin 目录>双击 act ...
- 02.JMS基础
1.面向消息的中间件(MOM) 1.什么是MOM 面向消息的中间件,Message Oriented Middleware,简称MOM,中文简称消息中间件,利用高效可靠的消息传递机制进行平台无 ...
- JMS基础知识
JMS规范: jms的基本构件: 连接工厂(connectionFactory):客户用来创建连接的对象.比如:activeMQ提供的ActiveMQConnectionFactory. 连接(co ...
- Java JMS 程序基础 与 ActiveMQ 安装(一)
一 ActiveMQ安装 从Apache官网上下载 ActivieMQ的安装包 apache-activemq-5.9.1-bin.tar.gz, 并拷贝到linux的安装目录解压 # tar -zx ...
- ActiveMQ学习笔记(一) JMS概要
(一)什么是JMS jms即Java消息服务(Java Message Service)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送 ...
- JMS and ActiveMQ first lesson(转)
JMS and ActiveMQ first lesson -- jms基础概念和应用场景 2011-6-18 PM 9:30 主讲:kimmking <kimmking@163.com> ...
随机推荐
- C#如何获取快捷方式指向的目标文件
前几天,做个小程序时遇到的问题,在百度上搜索了很久,没有发现好的解决方案,在英文网站上立刻搜到办法,看来还是国外的资源要全面一些,只是Google经常访问不正常,没办法啊. “C#如何获取快捷方式指向 ...
- php环境扩展包so
http://files.cnblogs.com/files/adtuu/no-debug-non-zts-20121212.zip /Applications/XAMPP/xamppfiles/li ...
- select 函数实现 三种拓扑结构 n个客户端的异步通信 (完全图+线性链表+无环图)
一.这里只介绍简单的三个客户端异步通信(完全图拓扑结构) //建立管道 mkfifo open顺序: cl1 读 , cl2 cl3 向 cl1写 cl2 读 , cl1 cl3 向 cl2写 cl3 ...
- 配置node与express初试
http://www.nodejs.org/下载对应系统的node版本并安装 用npm包管理器安装需要的包 sudo npm install -g express sudo npm install - ...
- Linux下crontab详解
1.crond介绍 crond是Linux下的任务调度命令,让系统定期执行指定程序.crond命令每分钟都会检查是否有要执行的工作,若有要执行的程序便会自动执行. linux下任务调度工作主要分两类: ...
- 【git】学习路径失败了
期初规划:搭建git远程服务器 使用gitlab作为管理工具 过程遇到的问题 1.gitlab不能安装到win ,且对centos要求6以上,我只有一台centos5 让运维帮升级 ...等待.. ...
- 一步步学习NHibernate(9)——连接查询和子查询(1)
请注明转载地址:http://www.cnblogs.com/arhat 在前几章中,我们把HQL的基本查询学习了一下,但是只有基本查询很显然不能满足我们的需求,那么就需要一下复杂查询比如" ...
- 【BZOJ 1053】[HAOI2007]反素数ant
Description 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4.如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数.例如,整数1 ...
- 判断webpart类型 How can I tell what type a web part is?
using(new SPSite("http://mysite/myweb").OpenWeb()){ //give relative path of the webpartpag ...
- TWaver初学实战——如何在EasyUI中插入TWaver
TWaver是一款强大的图形界面开发组件,可以很方便地集成到其他开发工具中.今天就用一个小例子来操练如何结合TWaver和EasyUI进行网页开发. 准备工作 俗话说他山之玉可以直接拿来,EasyUI ...