您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > JMS开源框架ActiveMQ入门
JMS开源框架ActiveMQ入门介绍基本的JMS概念与开源的JMS框架ActiveMQ应用,内容涵盖一下几点:1.基本的JMS概念2.JMS的消息模式3.介绍ActiveMQ4.一个基于ActiveMQ的JMS例子程序一:JMS基本概念1.JMS的目标为企业级的应用提供一种智能的消息系统,JMS定义了一整套的企业级的消息概念与工具,尽可能最小化的Java语言概念去构建最大化企业消息应用。统一已经存在的企业级消息系统功能。2.提供者JMS提供者是指那些完全完成JMS功能与管理功能的JMS消息厂商,理论上JMS提供者完成。JMS消息产品必须是100%的纯Java语言实现,可以运行在跨平台的架构与操作系统上,当前一些JMS厂商包括IBM,Oracle,JBoss社区(JBossCommunity),Apache社区(ApacheCommunity)。3.JMS应用程序,一个完整的JMS应用应该实现以下功能:JMS客户端–Java语言开发的接受与发送消息的程序非JMS客户端–基于消息系统的本地API实现而不是JMS消息–应用程序用来相互交流信息的载体被管理对象–预先配置的JMS对象,JMS管理员创建,被客户端运用。如链接工厂,主题等JMS提供者–完成JMS功能与管理功能的消息系统七七八八网二:JMS的消息模式1.点对点的消息模式(PointtoPointMessaging)下面的JMS对象在点对点消息模式中是必须的:a.队列(Queue)–一个提供者命名的队列对象,客户端将会使用这个命名的队列对象b.队列链接工厂(QueueConnectionFactory)–客户端使用队列链接工厂创建链接队列ConnectionQueue来取得与JMS点对点消息提供者的链接。c.链接队列(ConnectionQueue)–一个活动的链接队列存在在客户端与点对点消息提供者之间,客户用它创建一个或者多个JMS队列会话(QueueSession)d.队列会话(QueueSession)–用来创建队列消息的发送者与接受者(QueueSenderandQueueReceiver)e.消息发送者(QueueSender或者MessageProducer)–发送消息到已经声明的队列f.消息接受者(QueueReceiver或者MessageConsumer)–接受已经被发送到指定队列的消息2.发布订阅模式(publish–subscribeMode)a.主题Topic(Destination)–一个提供者命名的主题对象,客户端将会使用这个命名的主题对象b.主题链接工厂(TopciConnectionFactory)–客户端使用主题链接工厂创建链接主题ConnectionTopic来取得与JMS消息Pub/Sub提供者的链接。c.链接主题(ConnectionTopic)–一个活动的链接主题存在发布者与订阅者之间d.会话(TopicSession)–用来创建主题消息的发布者与订阅者(TopicPublisherandTopicSubscribers)e.消息发送者MessageProducer)–发送消息到已经声明的主题f.消息接受者(MessageConsumer)–接受已经被发送到指定主题的消息三:介绍ActiveMQActiveMQ是apache社区完成的JMS开源消息组件,客户端支持多种语言调用,包括Java,C++,C#,Perl,Python等。支持Spring配置集成等。更多信息访问这里:七七八八网四:基于ActiveMQ的Publish/subscribe模式Demo程序消息Broker,JMSprovider1.importjava.net.URI;2.importjava.net.URISyntaxException;3.4.importjavax.jms.Connection;5.importjavax.jms.ConnectionFactory;6.importjavax.jms.Destination;7.importjavax.jms.JMSException;8.importjavax.jms.MessageProducer;9.importjavax.jms.Session;10.importjavax.jms.TextMessage;11.importjavax.naming.Context;12.importjavax.naming.InitialContext;13.importjavax.naming.NamingException;14.15.importorg.apache.activemq.broker.BrokerFactory;16.importorg.apache.activemq.broker.BrokerService;17.importorg.apache.commons.logging.Log;18.importorg.apache.commons.logging.LogFactory;19.20./**21.*referto**@authorgloomyfish24.*25.*/26.publicclassPureJMSProducer{27.28.privatestaticfinalLogLOG=LogFactory.getLog(PureJMSProducer.class);29.30.privatePureJMSProducer(){31.}32.33./**34.*@paramargsthedestinationnametosendtoandoptionally,thenumberof35.*messagestosend36.*/37.publicstaticvoidmain(String[]args){38.ContextjndiContext=null;39.ConnectionFactoryconnectionFactory=null;40.Connectionconnection=null;41.Sessionsession=null;42.Destinationdestination=null;43.MessageProducerproducer=null;44.BrokerServicebroker=null;45.finalintnumMsgs=10;46.47./*48.*CreateaJNDIAPIInitialContextobject49.*/50.try{51.jndiContext=newInitialContext();52.}catch(NamingExceptione){53.LOG.info(CouldnotcreateJNDIAPIcontext:+e.toString());54.System.exit(1);55.}56.57.//createexternalTCPbroker58.try{59.broker=BrokerFactory.createBroker(newURI(broker:tcp://localhost:61616));60.broker.start();61.}catch(URISyntaxExceptione){62.LOG.info(Couldnotcreatebroker:+e.toString());63.}catch(Exceptione){64.LOG.info(Couldnotcreatebroker:+e.toString());65.}66.//try{67.//68.//}69.70./*71.*Lookupconnectionfactoryanddestination.72.*/73.try{74.connectionFactory=(ConnectionFactory)jndiContext.lookup(ConnectionFactory);75.destination=(Destination)jndiContext.lookup(MyTopic);76.}catch(NamingExceptione){77.LOG.info(JNDIAPIlookupfailed:+e);78.System.exit(1);79.}80.81./*82.*Createconnection.Createsessionfromconnection;falsemeans83.*sessionisnottransacted.Createsenderandtextmessage.Send84.*messages,varyingtextslightly.Sendend-of-messagesmessage.85.*Finally,closeconnection.86.*/87.try{88.connection=connectionFactory.createConnection();89.session=connection.createSession(false,Session.AUTO_ACKNOWLEDGE);90.producer=session.createProducer(destination);91.TextMessagemessage=session.createTextMessage();92.Thread.sleep(3000);93.for(inti=0;inumMsgs;i++){94.message.setText(Thisismessage+(i+1));95.LOG.info(Sendingmessage:+message.getText());96.producer.send(message);97.Thread.sleep(3000);98.}99.100./*101.*Sendanon-textcontrolmessageindicatingendofmessages.102.*/103.producer.send(session.createMessage());104.}catch(JMSExceptione){105.LOG.info(Exceptionoccurred:+e);106.}catch(InterruptedExceptione){107.LOG.info(Exceptionoccurred:+e);108.}finally{109.if(connection!=null){110.try{111.connection.close();112.}catch(JMSExceptione){113.}114.}115.}116.117.//stoptheTCPbroker118.try{119.broker.stop();120.}catch(Exceptione){121.LOG.info(stopthebrokerfailed:+e);122.}123.}124.}客户端:七七八八网
本文标题:JMS开源框架ActiveMQ入门
链接地址:https://www.777doc.com/doc-5191881 .html