- 浏览: 1011148 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (826)
- 硬件 (8)
- 软件 (24)
- 软件工程 (34)
- JAVA (229)
- C/C++/C# (77)
- JavaScript (8)
- PHP (1)
- Ruby (3)
- MySQL (14)
- 数据库 (19)
- 心情记事 (12)
- 团队管理 (19)
- Hadoop (1)
- spring (22)
- mybatis(ibatis) (7)
- tomcat (16)
- velocity (0)
- 系统架构 (6)
- JMX (8)
- proxool (1)
- 开发工具 (16)
- python (10)
- JVM (27)
- servlet (5)
- JMS (26)
- ant (2)
- 设计模式 (5)
- 智力题 (2)
- 面试题收集 (1)
- 孙子兵法 (16)
- 测试 (1)
- 数据结构 (7)
- 算法 (22)
- Android (11)
- 汽车驾驶 (1)
- lucene (1)
- memcache (12)
- 技术架构 (7)
- OTP-Erlang (7)
- memcached (17)
- redis (20)
- 浏览器插件 (3)
- sqlite (3)
- Heritrix (9)
- Java线程 (1)
- scala (0)
- Mina (6)
- 汇编 (2)
- Netty (15)
- libevent (0)
- CentOS (12)
- mongod (5)
- mac os (0)
最新评论
-
kingasdfg:
你这里面存在一个错误添加多个任务 应该是这样的 /** * ...
Quartz的任务的临时启动和暂停和恢复【转】 -
kyzeng:
纠正一个错误,long型对应的符号是J,不是L。
Jni中C++和Java的参数传递 -
zhaohaolin:
抱歉,兄弟,只是留下作记录,方便学习,如果觉得资料不好,可以到 ...
netty的个人使用心得【转】 -
cccoooccooco:
谢谢!自己一直以为虚机得使用网线才可以与主机连接呢。。
主机网卡无网线连接与虚拟机通信 -
yuqilin001:
要转别人的东西,请转清楚点嘛,少了这么多类,误人子弟
netty的个人使用心得【转】
当前,CORBA、DCOM、RMI等RPC中间件技术已广泛应用于各个领域。但是面对规模和复杂度都越来越高的分布式系统,这些技术也显示出其局限性:
(1)同步通信:客户发出调用后,必须等待服务对象完成处理并返回结果后才能继续执行;(2)客户和服务对象的生命周期紧密耦合:客户进程和服务对象进程
都必须正常运行;如果由于服务对象崩溃或者网络故障导致客户的请求不可达,客户会接收到异常;(3)点对点通信:客户的一次调用只发送给某个单独的目标对
象。
面向消息的中间件(Message Oriented
Middleware,MOM)较好的解决了以上问题。发送者将消息发送给消息服务器,消息服务器将消息存放在若干队列中,在合适的时候再将消息转发给接
收者。这种模式下,发送和接收是异步的,发送者无需等待;二者的生命周期未必相同:发送消息的时候接收者不一定运行,接收消息的时候发送者也不一定运行;
一对多通信:对于一个消息可以有多个接收者。
已有的MOM系统包括IBM的MQSeries、Microsoft的MSMQ和BEA的MessageQ等。由于没有一个通用的标准,这些系统很难实现
互操作和无缝连接。Java Message Service(JMS)是SUN提出的旨在统一各种MOM系统接口的规范,它包含点对点(Point
to
Point,PTP)和发布/订阅(Publish/Subscribe,pub/sub)两种消息模型,提供可靠消息传输、事务和消息过滤等机制。
1.JMS
JAVA 消息服务(JMS)定义了Java 中访问消息中间件的接口。JMS
只是接口,并没有给予实现,实现JMS 接口的消息中间件称为JMS
Provider,iLink实现了JMS接口,用户可以通过使用JMS接口,在iLink中进行JMS编程。 iLink支持JMS1.0.2版本。
2.JMS接口描述
JMS 支持两种消息类型PTP 和Pub/Sub,分别称作:PTP Domain 和Pub/Sub Domain,这两种接口都继承统一的JMS父接口,JMS 主要接口如下所示:
|
ConnectionFactory :连接工厂,JMS 用它创建连接
Connection :JMS 客户端到JMS Provider 的连接
Destination :消息的目的地
Session: 一个发送或接收消息的线程
MessageProducer: 由Session 对象创建的用来发送消息的对象
MessageConsumer: 由Session 对象创建的用来接收消息的对象
3.JMS消息模型
JMS 消息由以下几部分组成:消息头,属性,消息体。
3.1 消息头(Header)
- 消息头包含消息的识别信息和路由信息,消息头包含一些标准的属性如:JMSDestination,JMSMessageID 等。
|
3.2 属性(Properties)
- 除了消息头中定义好的标准属性外,JMS 提供一种机制增加新属性到消息头中,这种新属性包含以下几种:
1. 应用需要用到的属性;
2. 消息头中原有的一些可选属性;
3. JMS Provider 需要用到的属性。
标准的JMS 消息头包含以下属性:
|
3.3 消息体(Body)
- JMS API 定义了5种消息体格式,也叫消息类型,你可以使用不同形式发送接收数据并可以兼容现有的消息格式,下面描述这5种类型:
|
下例演示创建并发送一个TextMessage到一个队列:
TextMessage message = queueSession.createTextMessage();
message.setText(msg_text); // msg_text is a String
queueSender.send(message);
下例演示接收消息并转换为合适的消息类型:
Message m = queueReceiver.receive();
if (m instanceof TextMessage) {
TextMessage message = (TextMessage) m;
System.out.println("Reading message: " + message.getText());
} else {
// Handle error
}
4. 消息的同步异步接收
消息的同步接收是指客户端主动去接收消息,JMS 客户端可以采用MessageConsumer 的receive方法去接收下一个消息。
消息的异步接收是指当消息到达时,主动通知客户端。JMS 客户端可以通过注册一个实 现MessageListener 接口的对象到MessageConsumer,这样,每当消息到达时,JMS Provider 会调用MessageListener中的onMessage 方法。
5. PTP模型
PTP(Point-to-Point)模型是基于队列的,发送方发消息到队列,接收方从队列接收消息,队列的存在使得消息的异步传输成为可能。和邮件系统中的邮箱一样,队列可以包含各种消息,JMS Provider 提供工具管理队列的创建、删除。JMS PTP 模型定义了客户端如何向队列发送消息,从队列接收消息,浏览队列中的消息。
下面描述JMS PTP 模型中的主要概念和对象:
|
6. PUB/SUB模型
JMS Pub/Sub 模型定义了如何向一个内容节点发布和订阅消息,这些节点被称作主题(topic)。
主题可以被认为是消息的传输中介,发布者(publisher)发布消息到主题,订阅者(subscribe)
从主题订阅消息。主题使得消息订阅者和消息发布者保持互相独立,不需要接触即可保证消息的传送。
下面描述JMS Pub/Sub 模型中的主要概念和对象:
|
7. 开发JMS的步骤
广义上说,一个JMS 应用是几个JMS 客户端交换消息,开发JMS 客户端应用由以下几步构成:
用JNDI 得到ConnectionFactory 对象;
用JNDI 得到目标队列或主题对象,即Destination 对象;
用ConnectionFactory 创建Connection 对象;
用Connection 对象创建一个或多个JMS Session;
用Session 和Destination 创建MessageProducer 和MessageConsumer;
通知Connection 开始传递消息。
更详细的信息请参考 Java Message Specification .
发表评论
-
Advanced Message Queuing Protocol ( 3 ) 逻辑模型
2011-05-07 22:04 1167Sessions 建立在不同容器中的两个节点的链接必 ... -
Advanced Message Queuing Protocol ( 2 ) 逻辑模型
2011-05-07 22:04 966Nodes and Links 一个AMQP的网络包 ... -
Advanced Message Queuing Protocol ( 1 ) 概述
2011-05-07 22:03 1200The Advanced Message Queuing ... -
Apache Qpid (1) -- build
2011-05-07 22:02 1938http://qpid.apache.org/index.h ... -
ActiveMQ技术预研报告【转】
2011-04-22 14:44 1907ActiveMQ技术预研报告 研究部朱懋柱 1.文 ... -
ActiveMQ与MSMQ的异同【转】
2011-04-22 14:14 1909.NET下发送和接收ActiveMQ A:下载Act ... -
ActiveMQ在C#中的应用
2011-04-21 16:18 1195ActiveMQ 是个好东东,不必多说。ActiveM ... -
ActiveMQ实战之 Queue点对点消息【转】
2011-04-18 23:15 1205对于此类消息,其实就是指使用JMS中的发P2P(点对点)消息模 ... -
ActiveMQ实战之 Topic发布订阅消息【转】
2011-04-18 23:14 1187对于此类消息,其实就是指使用JMS中的发布订阅消息模型的消息, ... -
ActiveMQ实战(4):JMS的安全性【转】
2011-04-18 22:52 1226对于JMS服务的安全控制,ActiveMQ提供两种方式:简单授 ... -
ActiveMQ实战(3):Web控制台的安全性【转】
2011-04-18 22:52 1333安装好ActiveMQ后,其默认没有任何安全控制,任何人都可以 ... -
ActiveMQ实战(2):测试其是否正常工作【转】
2011-04-18 22:51 1201既然ActiveMQ安装好了并启动成功,接下来我们就编写一个测 ... -
ActiveMQ实战(1):安装与运行【转】
2011-04-18 22:45 1778ActiveMQ的项目主页:http://activemq.a ... -
[转] JMS开源比较
2011-03-30 23:46 1180Java开源JMS消息中间件 ... -
activemq5.2发送和接收BlobMessage简单实例
2011-03-29 23:45 1163package com.work.activemq ... -
ActiveMQ学习笔记----ActiveMQ和JBossMQ性能对比测试代码
2011-03-29 23:44 1221本文描述了对ActiveMQ进行性能测试的代码。性能测试用 ... -
ActiveMQ 实例
2011-03-29 23:21 10372009-06-24 ProducerTool.java ... -
activemq持久化配置,设置为主从模式(带复制的主从模式,应用mysql数据库)
2011-03-29 09:12 1818activemq持久化配置,设置为主从模式(带复制的主从模 ... -
ActiveMQ持久化消息的三种方式
2011-03-29 09:11 13611:前言 这一段给公司开发消息总线有机会研究A ... -
什么是JMS(Java消息服务)
2011-03-28 19:28 897在不同系统之间交换信息的一大障碍是如何在精确交换和格式化数据方 ...
相关推荐
消息中间件通常支持多种协议和消息格式,如Advanced Message Queuing Protocol (AMQP)、Message Queuing Telemetry Transport (MQTT) 和Simple Object Access Protocol (SOAP)等。通过消息中间件,系统可以异步处理...
【消息中间件和JMS原理】是分布式系统中重要的组件,它们主要解决了传统RPC(Remote Procedure Call)中间件存在的性能、健壮性和可扩展性的不足。RPC中间件如CORBA、DCOM、RMI,虽然方便了跨网络的函数调用,但其...
JMS消息由消息头、属性和消息体三部分组成。消息头包含了识别和路由信息,如JMSDestination、JMSMessageID等,这些由发送方或JMS Provider设置。属性允许用户自定义额外的信息,而消息体则承载实际的数据内容。 在...
3. **JMS消息结构**:JMS消息主要包括消息头、属性和消息体三个部分。 - **消息头**:包含消息的识别信息和路由信息。 - `JMSDestination`:消息发送的目的地。 - `JMSDeliveryMode`:指定消息是否需要持久化。 ...
Java消息服务(JMS)是SUN及其合作伙伴提出的一种规范,旨在统一各种消息中间件系统的接口,为Java开发者提供了一种标准的方式来访问和操作消息队列。JMS允许应用程序创建、发送、接收和读取消息,同时确保消息的...
Java消息服务(JMS)是由Sun Microsystems提出的一种消息中间件接口规范,旨在统一不同消息中间件系统的接口,提高应用程序的可移植性和互操作性。 #### 四、JMS介绍 **4.1 JMS简介** JMS是Java平台上的消息中间件...
《基于JMS的消息中间件的实现》这篇论文深入探讨了如何在JMX(Java ...通过阅读和研究论文中的内容,开发者不仅可以掌握JMS和JMX的基本原理,还能学习到如何在实际项目中应用这些技术,以提升系统的可维护性和可靠性。
通过消息传递和消息排队模型,消息中间件可以在分布式环境下扩展进程间的通信,支持应用程序或组件之间进行可靠的异步通信,从而降低系统间的耦合度,提高系统的可扩展性和可用性。 在分布式系统中,消息中间件的...
JMS消息由消息头、消息属性和消息体三部分组成: **1.3.1 消息头** 消息头包含消息的识别信息和路由信息,具体属性如下: - **JMSDestination**:消息发送的目的地,自动分配。 - **JMSDeliveryMode**:传送模式...
综上所述,这个例子提供了一个全面的实践,涵盖了Spring MVC、JMS和ActiveMQ的集成,帮助开发者理解如何在实际项目中使用消息中间件实现异步处理和解耦。通过学习这个示例,你可以了解到如何在Spring MVC环境中配置...
JMS的核心概念包括生产者、消费者、消息和消息队列/主题。生产者创建消息并发送到队列或主题,而消费者则从这些队列或主题中接收消息。JMS支持两种消息模型:点对点(Queue)和发布/订阅(Topic)。点对点模型中,每...
消息中间件是现代分布式系统中不可或缺的组件,它在系统之间提供可靠的数据传输服务,确保数据的高效、安全和解耦。本教程旨在帮助你从零基础开始,逐步成长为消息中间件的实战高手。我们将深入探讨消息中间件的核心...
《基于JMX框架的JMS服务器的设计和实现》是一篇探讨如何利用JMX(Java Management Extensions)技术构建符合JMS(Java Message Service)规范的消息中间件的硕士研究生毕业论文。该论文作者为陈冬,导师为周华研究员...
分布式消息中间件是现代软件架构中的重要组成部分,特别是在微服务和大数据处理场景中,它们扮演着数据通信的关键角色。本书《分布式消息中间件实践_倪炜(著)》深入探讨了四种主流的消息队列(Message Queue,MQ)...
Java消息中间件JMS,ActiveMQ
ActiveMQ 是Apache基金会维护的一款开源消息中间件,它实现了JMS 规范,并提供了丰富的特性和功能。ActiveMQ 可以帮助应用程序在不同的系统之间进行通信,实现消息的异步传输。 - **关键特点**: - **可移植性**:...
内容为基于JMS的消息中间件的研究与实现,格式为CAJ,页数为54
### TIBCO Rendezvous (TIBCO RV) 与 IBM MQ 及 JMS 消息中间件的对比分析 #### TIBCO Rendezvous 技术简介 TIBCO Rendezvous(简称TIBCO RV)是一款强大的中间件产品,它通过一系列专有的技术,实现了异构系统...
ActiveMQ是Apache软件基金会开发的一款开源消息中间件,它遵循Java消息服务(JMS)标准,提供高效、可靠的异步消息传递。在分布式系统中,消息中间件扮演着至关重要的角色,它允许不同组件之间通过解耦的方式进行...
该中间件提供了多种消息传递模式,包括点对点、发布/订阅、路由和集群等,适用于不同的应用场景。其主要功能包括高级的队列、消息处理机制以及丰富的管理工具,旨在确保消息能够安全、可靠地传输。 #### 二、产品...