ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:29.82KB ,
资源ID:9124631      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9124631.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(ActiveMQ解析.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

ActiveMQ解析.docx

1、ActiveMQ解析ActiveMQ解析JMS始终在JavaEE五花八门的协议里,WebService满天飞的时候占一位置,是因为:它可以把不影响用户执行结果又比较耗时的任务(比如发邮件通知管理员)异步的扔给JMS 服务端去做,而尽快的把屏幕返还给用户。 服务端能够多线程排队响应高并发的请求。 可以在Java世界里达到最高的解耦。客户端与服务端无需直连,甚至无需知晓对方是谁、在哪里、有多少人,只要对流过的信息作响应就行了,在企业应用环境复杂时作用明显。 JMS(Java Message Service)即 java消息服务 用于分布式系统得消息通信,JMS是J2EE技术中的一个部分,Sun公司

2、定义了JMS的标准接口,即javax.jms.*。JMS服务使得分布式系统的信息通信松散连接的,发送信息的客户端只需要负责发送信息,接收信息的客户端接收信息,两个客户端之间没有必要是同时可用的,甚至发送客户端都没有必要知道客户端的信息,只要负责发送到接收的服务端就可以,JMS可以说是低耦合的。同时JMS API 做到了以下2点异步的,服务端可以发送信息到一个客户端,客户端不需要为了收到信息而请求信息。可靠的,JMS API保证了服务端所有发送的信息最少发送一次和只发送一次下面介绍一些JMS API 的基本知识JMS API 基本组成 JMS provider服务者,是一个消息系统通过实现JMS

3、 API 接口,用于管理和控制信息。 JMS client 客户端用于发送和接收信息,通常是用在java程序中用java编写的 Messages 用于在客户端信息通信的对象 Administered Objects 由JMS provider为了client创建的对象,通常是connectionFactory和destinationMessages 通信方式JMS通信方式分为点对点通信,和发布/订阅方式点对点方式(point-to-point)点对点的消息发送方式主要建立在 Message Queue,Sender,reciever上,Message Queue 存贮消息,Sneder 发送消

4、息,receive接收消息,具体的信息就是 Sender Client发送Message 到Queue ,而 receiver Cliernt 从Queue中接收消息和发送消息已接受到Quere,确认消息接收。在使用点对点方式时需要注意,一条消息只有一个接收端,消息发送客户端与接收客户端没有时间上的依赖,发送客户端可以在任何时刻发送信息到Queue,而不需要知道接收客户端是不是在运行发布/订阅 方式(publish/subscriber Messaging)发布/订阅方式用于多接收客户端的方式作为发布订阅的方式,可能存在多个接收客户端,并且接收端客户端与发送客户端存在时间上的依赖。一个接收端只

5、能接收他创建以后发送客户端发送的信息。作为subscriber ,在接收消息时有两种方法,destination的receive方法,和实现message listener 接口的onMessage 方法。基础知识这里说的很少,具体的可以参照.的JMS API 指南 ActiveMQ的特性:完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,也是Apache Geronimo默认的JMS provider。 POJO withdout EJB Container,不需要实现EJB繁琐复杂的Message Bean接口和配置。 Spring Base,可以使用Spring

6、的各种特性如IOC、AOP 。 Effective,基于Jencks的JCA Container实现 pool connection,control transactions and manage security。 下面是它的特性列表 (详细的特性清单请参考http:/activemq.apache.org/features.html) 1.多种语言和协议编写客户端 语言: Java, C, C+, C#, Ruby, Perl, Python, PHP 应用协议: OpenWire,Stomp REST,WS Notification,XMPP,AMQP 2.完全支持JMS1.1和J2EE

7、 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,JXTA6.支持通过JDBC和journal提供高速的消息持久化7.从设计上保证了高性能的集群

8、,客户端-服务器,点对点8.支持Ajax9.支持与Axis的整合10.可以很容易得调用内嵌JMS provider,进行测试作为一个JMS client 都需要以下的组成Administered Objects:ConnectionFactory,DestinationConnection;SessionMessage Producers/Message CosumersMessagesHello实例=Hello.java=import java.io.Serializable;/*Hello.java用来传递JAVA对象* Author: cjp* Date: 2005-11-8* Time

9、: 22:24:02*/public class Hello implements Serializable private String id;private Hello hello;private PointList pointList;public String getId() return id;public void setId(String id) this.id = id;public Hello getHello() return hello;public void setHello(Hello hello) this.hello = hello;=SpringTest .ja

10、va=import org.springframework.jms.core.JmsTemplate;import org.springframework.jms.core.MessageCreator;import org.springframework.test.AbstractDependencyInjectionSpringContextTests;import javax.jms.*;/*发送JMS消息*/public class SpringTest extends AbstractDependencyInjectionSpringContextTestsprotected Str

11、ing getConfigLocations()return new Stringfile:D:wosametestcomwosameroomjmsjms.xml;public void testSendMessage() throws ExceptionJmsTemplate jmsTemplate = (JmsTemplate) applicationContext.getBean(jmsTemplate);jmsTemplate.send(new MessageCreator()public Message createMessage(Session session) throws JM

12、SExceptionObjectMessage message=session.createObjectMessage();Hello hello=new Hello();hello.setId(test);message.setObject(hello);return message;);=HelloMDP .java=/*处理JMS消息*/import mons.logging.Log;import mons.logging.LogFactory;import javax.jms.*;public class HelloMDP implements MessageListenerprote

13、cted Log log = LogFactory.getLog(HelloMDP.class);public void onMessage(Message message)tryObjectMessage objMessage = (ObjectMessage) message;Hello hello= (Hello) objMessage.getObject();System.out.println(hello.getId() = + hello.getId(); catch (JMSException e)log.error(Parse failed, e);=jms.xml= 例子二

14、MQ源码import java.util.Arrays;import java.util.Date;import javax.jms.Connection;import javax.jms.DeliveryMode;import javax.jms.Destination;import javax.jms.MessageProducer;import javax.jms.Session;import javax.jms.TextMessage;import org.apache.activemq.ActiveMQConnection;import org.apache.activemq.Act

15、iveMQConnectionFactory;import org.apache.activemq.util.IndentPrinter;/* A simple tool for publishing messages* * version $Revision: 1.2 $*/public class ProducerTool private Destination destination; private int messageCount = 10; private long sleepTime = 0L; private boolean verbose = true; private in

16、t messageSize = 255; private long timeToLive; private String user = ActiveMQConnection.DEFAULT_USER; private String password = ActiveMQConnection.DEFAULT_PASSWORD; private String url = ActiveMQConnection.DEFAULT_BROKER_URL; private String subject = TOOL.DEFAULT; private boolean topic = false; privat

17、e boolean transacted = false; private boolean persistent = false; public static void main(String args) ProducerTool producerTool = new ProducerTool(); String unknonwn = CommnadLineSupport.setOptions(producerTool, args); if( unknonwn.length 0 ) System.out.println(Unknown options: +Arrays.toString(unk

18、nonwn); System.exit(-1); producerTool.run(); public void run() Connection connection=null; try System.out.println(Connecting to URL: + url); System.out.println(Publishing a Message with size + messageSize+ to + (topic ? topic : queue + : + subject); System.out.println(Using + (persistent ? persisten

19、t : non-persistent + messages ; System.out.println(Sleeping between publish + sleepTime + ms ; if (timeToLive != 0) System.out.println(Messages time to live + timeToLive + ms ; / Create the connection. ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(user, password, url);

20、connection = connectionFactory.createConnection(); connection.start(); / Create the session Session session = connection.createSession(transacted, Session.AUTO_ACKNOWLEDGE); if (topic) destination = session.createTopic(subject); else destination = session.createQueue(subject); / Create the producer. MessageProducer producer = session.createProducer(destination); if (persistent) producer.setDeliveryMode(DeliveryMode.PERSISTENT); else producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1