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> ...
随机推荐
- libevent 初试
一直就想用一下libevent库,直到今天才去码代码.用法在他的头文件里面写的很清楚,原理的话也不是很难,感谢作者做的工作! 今天做了几个探索: 实现自定义事件类型的设置与触发 尝试 setInter ...
- 第五章 体验Qt Creator的神奇魅力
第五章 体验Qt Creator的神奇魅力 Qt Creator是官方提供的一个轻量级IDE(集成开发环境),功能强大,是程序员快速开发程序的有力助手.下面我们用它实现一个helloworld工程. ...
- SQL行列转换:报表_公司采购表_每个公司各采购了些什么产品
有同学问了个比较典型行列转换的问题,想想,解答如下:数据库有一张表: 是个公司采购表,想转化成如下报表,显示每个公司各采购了些什么产品: 哪些公司采购哪些产品是不确定的,所以报表的列有哪几项是不确定的 ...
- 【原】隐藏ultraGrid1指定列
void uGrdAllFlight_InitializeRow(object sender, InitializeRowEventArgs e) { /***********TEST START** ...
- C# - write values to configuration file
using System.Configuration;System.Configuration.Configuration config = ConfigurationManager.OpenExeC ...
- [译]线程生命周期-理解Java中的线程状态
线程生命周期-理解Java中的线程状态 在多线程编程环境下,理解线程生命周期和线程状态非常重要. 在上一篇教程中,我们已经学习了如何创建java线程:实现Runnable接口或者成为Thread的子类 ...
- 使用Chrome+node-inspector查找NodeJS内存泄漏
关键字:NodeJS, 内存泄漏,node-inspector,Chrome OS:Windows 10 本文介绍如何使用node-inspector+Chrome查找nodejs内存泄漏. 1.创建 ...
- Flex读文本文件
布局: <s:Group id="> <s:Rect width="100%" height="100%"> <s:fi ...
- 【转】perl ping检测功能脚本代码
我的第一个用于生产环境的perl脚本,虽然不是很优秀,但也迈出了扎实的一步 :)领导有任务,给一批IP列表,ping每一台机器,如果没有响应就发邮件通知,通知的邮件需要分开,不能通知一个列表,得一封一 ...
- Eval 表达式 GridView ItemCommand
<asp:TemplateColumn HeaderText="查看审批数据"> <ItemTemplate> <a onclick=& ...