JMS简介
JMS源于企业应用对于消息中间件的需求,使应用程序可以借助消息进行异步处理而互不影响。Sun公司和它的合作伙伴设计的JMS API定义了一组公共的应用程序接口和相应语法,使得Java程序能够和其他消息组件进行通信。JMS有四个组成部分:JMS服务提供者、消息管理对象、消息的生产者消费者和消息本身。
1)JMS服务提供者实现消息队列和通知,同时实现消息管理的API。JMS已经是J2EE API的一部分,J2EE服务器都提供JMS服务。
2) 消息管理对象提供对消息进行操作的API。JMS API中有两个消息管理对象:创建jms连接使用的工厂(ConnectionFactory)和目的地(Destination),根据消息的消费方式的不同ConnectionFactory可以分为QueueConnectionFactory和TopicConnectionFactory,目的地(Destination)可以分为队列(Queue)和主题(Topic)两种。
3)消息的生产者和消费者。消息的产生由JMS的客户端完成,JMS服务提供者负责管理这些消息,消息的消费者可以接收消息。消息的生产者可以分为――点对点消息发布者(P2P)和主题消息发布者(TopicPublisher)。所以,消息的消费者分为两类:主题消息的订阅者(TopicSubscriber)和点对点消息的接收者(queue receiver)
4)消息。消息是服务提供者和客户端之间传递信息所使用的信息单元。JMS消息由以下三部分组成:
a:消息头(header)――JMS消息头包含了许多字段,它们是消息发送后由JMS提供者或消息发送者产生,用来表示消息、设置优先权和失效时间等等,并且为消息确定路由。
b:属性(property)――用来添加删除消息头以外的附加信息。
c:消息体(body)――JMS中定义了5种消息体:ByteMessage、MapMessage、ObjectMessage、StreamMessage和TextMessage。
Messages 通信方式
1)点对点方式(point-to-point)
点对点的消息发送方式主要建立在 Message 、Queue、Sender、reciever上,其中Message 是数据载体,Queue 存贮消息,Sender 发送消息,receive接收消息。具体就是Sender Client发送Message到 Queue ,而 receiver
Client从Queue中接收消息以及确认消息接收。消息发送客户端与接收客户端没有时间上的依赖,发送端可以在任何时刻发送信息到Queue,且不关注是否有客户端在消费
2)发布/订阅 方式(publish/subscriber Messaging)
发布/订阅方式适用于多消费端的方式。作为发布订阅的方式,可能存在多个接收客户端,并且接收客户端与发送客户端存在时间上的依赖。一个接收端只能接收他创建以后发送客户端发送的信息。作为subscriber ,在接收消息时有两种方法,destination的receive方法,和实现message listener 接口的onMessage 方法。
ActiveMQ 是apache的一个开源消息总线。支持JMS1.1 和J2EE 1.4规范,在中间件领域扮演着重要角色。
ActiveMQ特性:
1.多种语言和协议编写客户端。语言: Java,C,C++,C#,Ruby,Perl,Python,PHP。应用协议: OpenWire,Stomp REST,WS Notification,XMPP,AMQP
2. 完全支持JMS1.1和J2EE 1.4规范 (持久化,XA消息,事务)
3. 对Spring的支持,ActiveMQ可以很容易内嵌到使用Spring的系统里面去,而且也支持Spring2.0的特性
4. 通过了常见J2EE服务器(如 Geronimo,JBoss 4,GlassFish,WebLogic)的测试,其中通过JCA 1.5 resource adaptors的配置,可以让ActiveMQ可以自动的部署到任何兼容J2EE 1.4 商业服务器上
5. 支持多种传送协议:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA
6. 支持通过JDBC和journal提供高速的消息持久化
7. 从设计上保证了高性能的集群,客户端-服务器,点对点
8. 支持Ajax
9. 支持与Axis的整合
10.可以很容易得调用内嵌JMS provider,进行测试
配上ActiveMQ的入门实例,可以让你快速了解MQ的工作原理。
生产者向JMS发送消息的步骤
1. 创建连接使用的工厂类JMS ConnectionFactory
2. 使用管理对象JMS ConnectionFactory建立连接Connection
3. 使用连接Connection 建立会话Session
4. 使用会话Session和管理对象Destination创建消息生产者MessageSender
5. 使用消息生产者MessageSender发送消息
消费者从JMS接受消息的步骤
1. 创建连接使用的工厂类JMS ConnectionFactory
2. 使用管理对象JMS ConnectionFactory建立连接Connection
3. 使用连接Connection 建立会话Session
4. 使用会话Session和管理对象Destination创建消息消费者MessageReceiver
5. 使用消息消费者MessageReceiver接受消息,需要用setMessageListener将MessageListener接口绑定到MessageReceiver,
消息消费者必须实现了MessageListener接口,需要定义onMessage事件方法。
分享到:
相关推荐
sonicmq&activemq资料,收集的关sonicmq&activemq的资料,介绍了消息中间介,简单ptp和发布式的概念,以及一点点activemq的例子。
详细内容: SpringJMS整合ActiveMQ.doc 详细说明文档 apache-activemq-5.8.0-bin.zip ActiveMQ安装包 JMSTest.rar MyEclipse8.5下web工程
一头扎进JMS之ActiveMQ,本人亲测,没问题。需要学习ActiveMQ的,这是比较好的入门资料,带源码。
<a href=http://activemq.apache.org/version-5-getting-started.html >http://activemq.apache.org/version-5-getting-started.html</a> <a href=http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html>...
java JMS模拟ActiveMQ代理服务器并实现消息收发,这里是工程源码,已经过测试,可以直接使用。
spring3.0整合了activemQ和jms可以发送信息和接收消息
深入掌握JMS——ActiveMQ 十一章pdf,收集整理
ActiveMQ 是Apache出品,最流行的,能力强劲的开源jms...ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。
基于Spring+JMS+ActiveMQ+Tomcat,我使用的版本情况如下所示:Spring 3.2.0,ActiveMQ 5.4.3,Tomcat 6.0.43。本例通过详细的说明和注释,实现消息服务的基本功能:发送与接收。Spring对JMS提供了很好的支持,可以...
该用例使用jms 对Activemq进行基本操作,包含生产者和消费者。
NULL 博文链接:https://itjiehun.iteye.com/blog/1321969
JMS-activemq 实例(分ppt,eclipse工程,说明三部分) 特别有readme说明,一看就会用 spring实现方式,可运行有jar包
Apache ActiveMQ JMS实现
JMS学习指导讲解PPT,ActiveMQ学习PPT 以及对JMS实现的研究
本章我将通过spring jms和activemq实现单Web项目服务器间异步访问和多Web项目服务器间异步访问。 一. 简介 1. 什么是Apache ActiveMq Apache ActiveMq是最流行和最强大的开源消息和集成服务器。同时Apache ActiveMq...
ApacheCamel-JMS-ActiveMQ Apache Camel JMS ActiveMQ 使用样例 1.从本地读取信息推送到MQ中 2.从MQ中读取信息保存到本地
此资源包括JMS之ActiveMQ视频教程+课程课件+课程代码,有意者请自取。
一头扎进JMS之ActiveMQ,主要讲解ActiveMq的使用,内带视频源码,基础讲解。接口分析。