JMS入门之实例

合集下载

消息中间件JMS入门

消息中间件JMS入门

消息中间件JMS⼊门1. JMS⼊门1.1消息中间件什么是消息中间件消息中间件利⽤⾼效可靠的消息传递机制进⾏平台⽆关的数据交流,并基于数据通信来进⾏的集成。

通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。

对于消息中间件,常见的⾓⾊⼤致也就有Producer(⽣产者)、Consumer(消费者)常见的消息中间件产品:(1)ActiveMQActiveMQ 是Apache出品,最流⾏的,能⼒强劲的开源消息总线。

ActiveMQ 是⼀个完全⽀持JMS1.1和J2EE 1.4规范的 JMS Provider实现。

我们在本次课程中介绍 ActiveMQ的使⽤。

(2)RabbitMQAMQP协议的领导实现,⽀持多种场景。

淘宝的MySQL集群内部有使⽤它进⾏通讯,OpenStack开源云平台的通信组件,最先在⾦融⾏业得到运⽤。

(3)ZeroMQ史上最快的消息队列系统(4)KafkaApache下的⼀个⼦项⽬。

特点:⾼吞吐,在⼀台普通的服务器上既可以达到10W/s的吞吐速率;完全的分布式系统。

适合处理海量数据。

1.2 JMS简介1.2.1什么是JMSJMS(Messaging Service)是Java平台上有关⾯向消息中间件的技术规范,它便于消息系统中的Java应⽤程序进⾏消息交换,并且通过提供标准的产⽣、发送、接收消息的接⼝简化企业应⽤的开发。

JMS本⾝只定义了⼀系列的接⼝规范,是⼀种与⼚商⽆关的 API,⽤来访问消息收发系统。

它类似于 JDBC(Database Connectivity):这⾥,JDBC 是可以⽤来访问许多不同关系的 API,⽽ JMS 则提供同样与⼚商⽆关的访问⽅法,以访问消息收发服务。

许多⼚商⽬前都⽀持JMS,包括 IBM 的 MQSeries、BEA的 Weblogic JMS service和 Progress 的 SonicMQ,这只是⼏个例⼦。

JMS 使您能够通过消息收发服务(有时称为消息中介程序或路由器)从⼀个 JMS 客户机向另⼀个 JML 客户机发送消息。

JMS基础教程实例(内部)

JMS基础教程实例(内部)

JMS基础示例教程需求分析在很多实际应用中,不只是简单地要求用户需要注册登录。

还要求不同的用户对不同资源拥有不同的权限。

某单位的新闻部门的某些人才拥有对外发布新闻的权限;每个部门只有对自己部门内部资源才拥有创建、修改权限,对于其他部门创建的资源如网页等只有浏览的权限。

这些复杂的用户权限验证需要可以总结为如下几点:∙用户资料管理系统:对用户的注册资料进行管理。

可进行用户资料的新增修改,能够查询获取丢失的密码。

∙权限的验证和授权:拦截所有访问受保护资源的请求,检查该用户是否被授权访问该资源。

∙可控制的资源限制访问:对于系统的资源,无论是数据或行为动作,对确定的一组用户都有限制访问。

例如对于有的用户只允许读操作,不能进行写操作;有些资源只有创建者才可以访问和操作等。

这3种需求适合大部分应用系统,通过它们的实现,可以形成一个用户安全管理方面的组件框架,并且能够重复地在不同的应用系统中使用。

2架构设计实现一个完整的用户安全管理框架,可以有两种实现途径。

在J2EE出现以前,大部分是由应用系统本身实现。

因此,很多有经验的软件商都拥有自己成熟的用户安全管理系统,但是缺点也是比较明显,自己设计的用户安全管理系统可重用性低,有的和具体应用程序过分紧密地绑定在一起,无法移植到其他系统上。

但是,随着业务量上升,应用系统的不断增加,会出现不同应用系统拥有不同的用户登录验证体系,很显然,这给用户访问带来了不方便,用户不可能为每个系统注册一套用户和密码,定制一套用户角色。

因此,整个服务器群中需要统一的用户权限验证体系。

而J2EE容器的用户安全管理框架再辅助以LDAP或数据库系统,可以很方便地达到这个目标。

2.1角色J2EE容器的用户安全框架是基于RBAC(Roled-Based Access Control,相关网址:/rbac/)设计模型建立的,这是一个基于角色的访问权限控制模型。

首先必须了解角色的含义,在RBAC中角色Role的定义是:Role是明确表达访问控制(Aceess Control)策略的一种语义构建词。

ActiveMq-JMS简单实例使用tomcat

ActiveMq-JMS简单实例使用tomcat

ActiveMq初级操作(工具:tomcat6.0、activeMq5.3.2、Myeclipse7.0,java1。

5)这是本人第一次发表个人使用ActiveMq,如有错误,请指出。

只为与众人共享我的心得。

activeMq是一个开源的支持JMS的框架:(以下为考录他人的信息,如有版权问题,请联系)一、特性及优势1、实现JMS1.1规范,支持J2EE1.4以上2、可运行于任何jvm和大部分web容器(ActiveMQ works great in any JVM)3、支持多种语言客户端(java, C, C++, AJAX, ACTIONSCRIPT等等)4、支持多种协议(stomp,openwire,REST)5、良好的spring支持(ActiveMQ has great Spring Support)6、速度很快,JBossMQ的十倍(ActiveMQ is very fast; often 10x faster than JBossMQ.)7、与OpenJMS、JbossMQ等开源jms provider相比,ActiveMQ有Apache的支持,持续发展的优势明显。

二、下载安装1、下载/download.html,在这个页面里有你所需要的各个版本,我用的是最新的版本-ActiveMQ 5.3.2。

2、安装直接解压至任意目录(如:d:\ apache-activemq-5.1.0),但是我用的时候是解压到D盘的根目录下,我建议各位也这样,不用对它的一些bat进行修改。

3、启动ActiveMQ服务器方法1:直接运行bin\activemq.bat方法2(在JVM中嵌套启动):(这个我没用过,你可以试试)cd exampleant embedBroker4、ActiveMQ消息管理后台系统:http://localhost:8161/admin打开主页后,你可以看到activeMq中带的一些实例,三、详细实例以下为本人的一个简单的实例,希望对各位有所帮助,我是利用网上的资料,将tomcat和activeMq整合在一起做的一个发送接受的发布订阅的例子(我用的是tomcat6.0,activeMq5.3.2):首先整合tomcat和activeMq:1、准备jar包:将ActiveMQ lib目录下的5个jar包复制到Tomcat lib目录下:activemq-core-5.1.0.jaractivemq-web-5.1.0.jargeronimo-j2ee-management_1.0_spec-1.0.jargeronimo-jms_1.1_spec-1.1.1.jargeronimo-jta_1.0.1B_spec-1.0.1.jar2、修改配置文件:2.1 修改Tomcat的conf/context.xml文件:在<context></context>节点中添加以下内容:<Resourcename="jms/FailoverConnectionFactory"auth="Container"type="org.apache.activemq.ActiveMQConnectionFactory"description="JMS Connection Factory"factory="org.apache.activemq.jndi.JNDIReferenceFactory"brokerURL="failover:(tcp://localhost:61616)?initialReconnectDelay=10 0&amp;maxReconnectAttempts=5"brokerName="localhost"useEmbeddedBroker="false"/><Resourcename="jms/NormalConnectionFactory"auth="Container"type="org.apache.activemq.ActiveMQConnectionFactory"description="JMS Connection Factory"factory="org.apache.activemq.jndi.JNDIReferenceFactory"brokerURL="tcp://localhost:61616"brokerName="localhost"useEmbeddedBroker="false"/><Resource name="jms/topic/MyTopic"auth="Container"type="mand.ActiveMQTopic"factory="org.apache.activemq.jndi.JNDIReferenceFactory"physicalName="MY.TEST.FOO"/><Resource name="jms/queue/MyQueue"auth="Container"type="mand.ActiveMQQueue"factory="org.apache.activemq.jndi.JNDIReferenceFactory"physicalName="MY.TEST.FOO.QUEUE"/>配置说明:以JNDI的方式定义了ActiveMQ的broker连接url、Topic和Queue。

JBOSS建立JMS应用实例

JBOSS建立JMS应用实例

JBOSS建立JMS应用实例
JBOSS创建JMS应用程序实例
环境配置描述
Jboss4.2.3 Java ee 5 MySql5.0
安装jdk,我的目录是C:\\Sun\\SDK安装jboss。

我的目录是D:\\jboss4.2.3安装mysql
配置环境变量JBOSS_HOME D:\\jboss4.2.3配置环境变量JA V A_HOME C:\\Sun\\SDK\\jdk
JBOSS JMS配置
由于没有使用集群,JBOSS的默认应用程序就足够了。

1.配置MySQL 数据库的JNDI
将MySQL数据库驱动程序复制到默认\\lib JBOSS没有自己的MySQL数据库驱动程序。

在D: \ \ JBoss 4.2.3 \ \ DOCS \ \示例\ \ JCA 下的文件夹下,有许多数据源定义模板被不同的数据库引用。

将mysql-ds.xml文件复制到您正在使用的服务器,如D: \ \ JBoss 4.2.3 \ \服务器\ \默认\ \部署。

修改mysql-ds.xml文件的内容,以便它可以通过JDBC正确访问您的mysql数据库,如下所示:。

JMS应用的简单例子

JMS应用的简单例子

JMS应用的简单例子JMS应用的简单例子September 16, 2006 – 9:54 pm No TagsJ2EE应用客户端通常是用来访问安装在服务器端的J2EE组件。

客户端是一个类文件,是一个简单的、独立的、运行在服务器外的程序。

它描述了JMS应用必须完成的基本工作:•创建连接和会话•创建消息生产者和消费者•发送和接收消息在J2EE应用中,以上工作全部或者部分由EJB容器完成。

本文涵盖以下主题:•配置运行J2EE客户端和应用的环境•同步接收消息的点对点(PTP)例子•使用监听器的订阅/发布(pub/sub)例子每一个例子都包含两个程序:一个发送消息,另一个接收消息。

可以在两个窗口中运行。

1 配置运行应用的环境在运行例子前,必须确定运行环境已经配置好了。

Table 1显示如何配置环境变量。

Before you can run the examples, you need to make sure your environment is set appropriately. Table 1 shows how to set the environment variables needed to run J2EE applications on Windows and UNIX platforms.2 一个简单的PTP例子本节描述了PTP客户端程序怎样发送、接收消息步骤:•编写PTP客户端程序•编译PTP客户端•运行JMS提供者(一般指JMS服务器)•创建JMS管理对象•运行PTP客户端•删除队列2.1 编写 PTP客户端程序消息发送程序SimpleQueueSender.java完成以下任务:1.用JNDI查找队列连接工厂(QueueConnectionFactory)和消息队列(Queue)2.创建连接(connection)和会话(session)3.创建消息发送者(QueueSender)3.创建消息(T extMessage)5.发送消息到队列6.发送控制消息表明消息末尾7.在finally代码块中关闭连接(connection),关闭连接则自动关闭会话和消息发送消息接收程序SimpleQueueReceiver.java完成以下任务:1.通过JNDI查找队列连接工厂(QueueConnectionFactory )和队列(queue)2.创建连接(connection )和会话(session)3.创建消息接收者(QueueReceiver)4.开始连接,传送消息5.从队列中接收消息,直至消息接受完毕6.在finally代码块中关闭连接,关闭连接则自动关闭消息接收有几种方式调用receive方法实现消息同步接收。

JMS入门小例子+weblogic的安装及在weblogic中配置JMS服务

JMS入门小例子+weblogic的安装及在weblogic中配置JMS服务

JMS入门小例子+weblogic的安装及在weblogic中配置JMS服务JMS是一个由AS提供的Message服务。

它能接受消息产生者(Message Provider)所发出的消息,并把消息转发给消息消费者(Message Consumer)。

以下是接收端和发送端的详细布署步骤,适用于初学者的学习接收端需要的包:commons-logging-1.1.1.jarjettison-1.0.jarjms-1.1.jarlog4j-1.2.15.jarspring.jarspring-asm-3.0.5.RELEASE.jarspring-beans-3.0.5.RELEASE.jarspring-context-3.0.5.RELEASE.jarspring-core-3.0.5.RELEASE.jarspring-expression-3.0.5.RELEASE.jarspring-jms-2.5.6.jarspring-transaction-3.0.5.jarspring-web-3.0.5.RELEASE.jarweblogic.jarxml-apis.jar发送端需要的包:commons-logging-1.1.1.jarjettison-1.0.jarjms-1.1.jarlog4j-1.2.15.jarspring-asm-3.0.5.RELEASE.jarspring-beans-3.0.5.RELEASE.jarspring-context-3.0.5.RELEASE.jarspring-core-3.0.5.RELEASE.jarspring-expression-3.0.5.RELEASE.jarspring-jms-2.5.6.jarspring-jms.jarspring-transaction-3.0.5.jarweblogic.jarxml-apis.jar一、新建一个工程用做接收端本例名为jmsMessageReceive1、在Web.xml文件中添加如下内容:<!-- 加载多个spring配置文件--><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-jms.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener><listener><listener-class>org.springframework.web.util.Log4jConfigListener</listener-class></listener><context-param><param-name>log4jConfigLocation</param-name><param-value>classpath:log4j.properties</param-value></context-param><context-param><param-name>log4jRefreshInterval</param-name><param-value>60000</param-value></context-param>2、在src文件夹下新建spring-jms.xml文件,内容如下:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:aop="/schema/aop"xmlns:tx="/schema/tx"xmlns:jaxws="/jaxws"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans-2.0.xsd/schema/aop/schema/aop/spring-aop-2.0.xsd/schema/tx/schema/tx/spring-tx-2.0.xsd/jaxws /schemas/jaxws.xsd"> <bean id="jkJndiTemplate"class="org.springframework.jndi.JndiTemplate"><property name="environment"><props><prop key="java.naming.factory.initial">weblogic.jndi.WLInitialContextFactory</prop><prop key="java.naming.provider.url">t3://localhost:7001</prop><prop key="java.naming.security.principal">weblogic</prop><prop key="java.naming.security.credentials">weblogic</prop></props></property></bean><bean id="jkJndiConnectionFactory"class="org.springframework.jndi.JndiObjectFactoryBean"><property name="jndiTemplate" ref="jkJndiTemplate"></property><property name="jndiName" value="JKFC"></property></bean><bean id="jkConnectionFactory"class="org.springframework.jms.connection.CachingConnectionFactory"><property name="targetConnectionFactory"ref="jkJndiConnectionFactory"></property><property name="sessionCacheSize" value="1"></property></bean><bean id="destinationResolver" class="org.springframework.jms.support.destination.JndiDestinationResolver"><property name="jndiTemplate" ref="jkJndiTemplate"></property><property name="cache" value="true"></property><property name="fallbackToDynamicDestination" value="false"></property> </bean><bean id="jkListener" class="com.ylw.jms.JmsMessageListener"></bean><bean id="jkMsgListener" class="org.springframework.jms.listener.adapter.MessageListenerAdapter"><constructor-arg ref="jkListener"/><property name="defaultListenerMethod" value="onMessage"/></bean><bean id="jkJmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"><property name="connectionFactory" ref="jkConnectionFactory"></property><property name="destinationResolver" ref="destinationResolver"></property><property name="concurrentConsumers" value="1"></property><property name="destinationName" value="JKTP"></property><property name="messageListener" ref="jkMsgListener"></property></beans>3、在src下新建包com.ylw.jms在jms包下新建class文件JmsMessageListener.java,内容如下:package com.ylw.jms;import javax.jms.JMSException;import javax.jms.Message;import javax.jms.MessageListener;import javax.jms.TextMessage;/**** 项目名称:jmsMessageReceive* 类名称:JMSMessageListener* 类描述:JMS消息监听* 创建人:ylw* 创建时间:2012-3-2 下午03:47:00* 修改人:ylw* 修改时间:2012-3-2 下午03:47:00* 修改备注:* 版本:**/public class JmsMessageListener implements MessageListener {/* (non-Javadoc)* @see javax.jms.MessageListener#onMessage(javax.jms.Message) */public void onMessage(Message message) {System.out.println("监听成功...");String msg = "";System.out.println( "Message: " + message.toString() );try {msg = ((TextMessage)message).getText();} catch (JMSException e) {// TODO Auto-generated catch blocke.printStackTrace();System.out.println("传入的msg内容为: ");System.out.println(msg);}}除此之外,还要在src文件夹下新建log4j.properties文件,这里为了避免初学者到处找所以加入内容,如下:#'rootLogger' Never expunge! We need it when error!log4j.rootLogger=info, stdout, R.zephyr.validate.dao=info, R.zephyr.idsrv.services.impl=info, R#.zephyr.idsrv.util.ProperiesHelper=info, stdout, R#.zephyr.cis.task.SxccbReadCisPkgTask=debug,stdout,R.hibernate=errorlog4j.appender.stdout=org.apache.log4j.ConsoleAppenderyout=org.apache.log4j.PatternLayout# Pattern to output the caller's file name and line number.yout.ConversionPattern=%-5p [%t] (%F:%L) - %m%nlog4j.appender.console=org.apache.log4j.ConsoleAppenderyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%d{ISO8601}:%6r:%p:%m%nlog4j.appender.R=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.R.File=logs/imageproserver.log#log4j.appender.R.File=C:\\bits-ios.loglog4j.appender.R.MaxFileSize=10MB# Keep one backup filelog4j.appender.R.MaxBackupIndex=10yout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%d: at %l%n [%t] %-p - %m%n到这里JMS接收端完成。

简单的JMS实例

简单的JMS实例

简单的JMS实例1.⾸先需要⼀台JMS的提供者,在这⾥我选择使⽤的是apache-activemq-5.3.2这个服务器,⾸先下载服务器并通过bin⽬录下的activemq.bat启动服务器,此时可通过http://ocalhost:8161/admin/访问服务器查看是否发布成功2.服务器发布成功之后就可以开始写消息发送者的程序了:import javax.jms.Connection;import javax.jms.ConnectionFactory;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.ActiveMQConnectionFactory;public class Sender {public static void main(String[] args) {// ConnectionFactory :连接⼯⼚,JMS ⽤它创建连接ConnectionFactory connectionFactory;// Connection :JMS 客户端到JMS Provider 的连接Connection connection = null;// Session:⼀个发送或接收消息的线程Session session;// Destination :消息的⽬的地;消息发送给谁.Destination destination;// MessageProducer:消息发送者MessageProducer producer;// TextMessage message;// 构造ConnectionFactory实例对象,此处采⽤ActiveMq的实现jarconnectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD, "tcp://localhost:61616");try {// 构造从⼯⼚得到连接对象connection = connectionFactory.createConnection();// 启动connection.start();// 获取操作连接session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);// 获取session注意参数值xingbo.xu-queue是⼀个服务器的queue,须在在ActiveMq的console配置destination = session.createQueue("FirstQueue");//Destination destination1=session.createTopic("Second");//MessageProducer producer1 = session.createProducer(destination1);//TextMessage message1 = session.createTextMessage("我想发送给多个⼈的消息");//producer1.send(message1);// 得到消息⽣成者【发送者】producer = session.createProducer(destination);//创建需要发布的消息TextMessage message = session.createTextMessage("ActiveMq 发送的消息");// 设置不持久化,此处学习,实际根据项⽬决定producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);//发送消息producer.send(message);mit();} catch (Exception e) {e.printStackTrace();} finally {try {if (null != connection)connection.close();} catch (Throwable ignore) {}}}}消息发布者3.此时消息发送者创建完毕之后就可以创建消息接受者的程序了:import javax.jms.Connection;import javax.jms.ConnectionFactory;import javax.jms.Destination;import javax.jms.MessageConsumer;import javax.jms.Session;import javax.jms.TextMessage;import org.apache.activemq.ActiveMQConnection;import org.apache.activemq.ActiveMQConnectionFactory;public class Receiver {public static void main(String[] args) {// ConnectionFactory :连接⼯⼚,JMS ⽤它创建连接ConnectionFactory connectionFactory;// Connection :JMS 客户端到JMS Provider 的连接Connection connection = null;// Session:⼀个发送或接收消息的线程Session session;// Destination :消息的⽬的地;消息发送给谁.Destination destination;// 消费者,消息接收者MessageConsumer consumer;connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD, "tcp://localhost:61616");try {// 构造从⼯⼚得到连接对象connection = connectionFactory.createConnection();// 启动connection.start();// 获取操作连接session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);// 获取session注意参数值xingbo.xu-queue是⼀个服务器的queue,须在在ActiveMq的console配置destination = session.createQueue("FirstQueue");//destination = session.createTopic("Second");consumer = session.createConsumer(destination);while (true) {// 设置接收者接收消息的时间,为了便于测试,这⾥设定为100sTextMessage message = (TextMessage) consumer.receive(100000);if (null != message) {System.out.println("收到消息:" + message.getText());} else {break;}}} catch (Exception e) {e.printStackTrace();} finally {try {if (null != connection)connection.close();} catch (Throwable ignore) {}}}}消息接收者。

mq消息队列的java的使用方法实例

mq消息队列的java的使用方法实例

mq消息队列的java的使用方法实例下面是一个使用Java的JMS (Java Message Service) API进行消息队列操作的简单示例。

在此示例中,我们将使用ActiveMQ作为消息代理。

注意:您需要将ActiveMQ的依赖项添加到项目的文件中,以便运行此示例。

首先,我们创建一个生产者(发送消息到队列)的类:```javaimport ;import ;public class Producer {public static void main(String[] args) throws JMSException {// 创建连接工厂ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("// 创建连接Connection connection = ();// 开启连接();// 创建会话Session session = (false, _ACKNOWLEDGE); // 创建目标(队列)Destination destination = ("testQueue");// 创建消息生产者MessageProducer producer = (destination); // 创建并发送消息TextMessage message = ("Hello World!"); (message);("Sent message: " + ());// 关闭连接和会话();}}```然后,我们创建一个消费者(从队列接收消息)的类:```javaimport ;import ;public class Consumer {public static void main(String[] args) throws JMSException {// 创建连接工厂ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("// 创建连接Connection connection = ();// 开启连接();// 创建会话Session session = (false, _ACKNOWLEDGE);// 创建目标(队列)Destination destination = ("testQueue");// 创建消息消费者MessageConsumer consumer = (destination);// 接收消息Message message = (); // 这里可以添加一个时间参数以限制等待时间,例如:表示等待10秒。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

JMS是一个由AS提供的Message服务。

它能接受消息产生者(Message Provider)所发出的消息,并把消息转发给消息消费者(Message Consumer)。

2、JMS提供2种类型的消息服务:(1)Queue,即点对点,每个消息只转发给一个消息消费者使用。

(2)Topic,即发布和订阅,每个消息可以转发给所有的订阅者(消费者)。

3、WEBLOGIC 8下的JMS配置:(1)配置JMS Connection Factory(2)配置JMS File Store(目前所找到的文档都是配置File Store,其实在具体的应用中,可能JMS JDBC Store更广泛,但暂时没有找到资料)(3)配置JMS Server(4)在JMS Server的destinations中配置JMS Queue或者JMS Topic其中提供给消息产生者和消息消费者使用的是JMS Connection Factory的JNDI和JMS Queue或者JMS Topic的JNDI。

4、消息产生者向JMS发送消息的步骤:(1)使用JNDI查询对象JMS ConnectionFactory和Destination(JMS Queue/Topic)(2)使用管理对象JMS ConnectionFactory建立连接Connection(3)使用连接Connection 建立会话Session(4)使用会话Session和管理对象Destination创建消息生产者MessageSender(5)使用消息生产者MessageSender发送消息一个消息发送者的例子:package myjms;import java.util.*;import javax.naming.*;import javax.jms.*;public class MessageProducter {public static void main(String[] args) {String queueConnectionFactoryName = "myjmsconnectionfactory"; //JMS Connection Factory的JNDIString queueName = "myjmsqueue"; //JMS Queue或者JMS Topic的JNDI boolean transacted = false;//transaction模式int acknowledgementMode =Session.AUTO_ACKNOWLEDGE;//acknowledgement模式String message="Message need to send";//模拟需要发送的消息Properties properties = new Properties();properties.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLIniti alContextFactory");properties.put(Context.PROVIDER_URL, "t3://localhost:7001");try {Context context = new InitialContext(properties);Object obj = context.lookup(queueConnectionFactoryName);QueueConnectionFactory queueConnectionFactory = (QueueConnectionFactory) obj;//JMS Connection Factory的获得obj = context.lookup(queueName);Queue queue = (Queue) obj;//JMS Queue或者JMS Topic的获得QueueConnectionqueueConnection=queueConnectionFactory.createQueueConnection();//产生连接queueConnection.start();QueueSession queueSession =queueConnection.createQueueSession(transacted, acknowledgementMode);TextMessage textMessage = queueSession.createTextMessage();textMessage.clearBody();textMessage.setText(message);QueueSender queueSender = queueSession.createSender(queue);queueSender.send(textMessage);if (transacted) {mit();}if (queueSender != null) {queueSender.close();}if (queueSession != null) {queueSession.close();}if (queueConnection != null) {queueConnection.close();}}catch(Exception ex){ex.printStackTrace();}}}5、消息消费者从JMS接受消息的步骤:(1)使用JNDI查询对象JMS ConnectionFactory和Destination(JMS Queue/Topic)(2)使用管理对象JMS ConnectionFactory建立连接Connection(3)使用连接Connection 建立会话Session(4)使用会话Session和管理对象Destination创建消息消费者MessageReceiver(5)使用消息消费者MessageReceiver接受消息,需要用setMessageListener将MessageListener接口绑定到MessageReceiver消息消费者必须实现了MessageListener接口,需要定义onMessage事件方法。

一个消息消费者的例子:package myjms;import java.util.*;import javax.naming.*;import javax.jms.*;public class MessageRecieverimplements MessageListener {public void onMessage(Message message) {if (message instanceof TextMessage) {TextMessage textMessage = (TextMessage) message;try {System.out.println("Message content is:" + textMessage.getText());}catch (JMSException e) {e.printStackTrace();}}}public static void main(String[] args) {MessageReciever msgRcvr=new MessageReciever();String queueConnectionFactoryName = "myjmsconnectionfactory";String queueName = "myjmsqueue";boolean transacted = false;int acknowledgementMode = Session.AUTO_ACKNOWLEDGE;Properties properties = new Properties();properties.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");properties.put(Context.PROVIDER_URL, "t3://localhost:7001");try {Context context = new InitialContext(properties);Object obj = context.lookup(queueConnectionFactoryName);QueueConnectionFactory queueConnectionFactory = (QueueConnectionFactory)obj;obj = context.lookup(queueName);Queue queue = (Queue) obj;QueueConnection queueConnection = queueConnectionFactory.createQueueConnection();queueConnection.start();QueueSession queueSession =queueConnection.createQueueSession(transacted,acknowledgementMode);QueueReceiver queueReceiver = queueSession.createReceiver(queue);queueReceiver.setMessageListener(msgRcvr);synchronized(msgRcvr){msgRcvr.wait(100000);}if (queueReceiver != null) {queueReceiver.close();}if (queueSession != null) {queueSession.close();}if (queueConnection != null) {queueConnection.close();}}catch (Exception ex) {ex.printStackTrace();}}}6、Message-driven BeanMDB实际上就是一个消息消费者的客户端程序。

它由AS EJB Container来管理。

在JBUILDER生成一个MDB非常简单。

相关文档
最新文档