JMS的样例

1、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的JNDI String 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.WLInitialContextFactory"); 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的获得 QueueConnection queueConnection=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) { queueSession.commit(); } 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 MessageReciever implements 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 Bean
MDB实际上就是一个消息消费者的client程序。它由AS EJB Container来管理。在JBUILDER生成一个MDB很easy。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/290687.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《面向对象的思考过程(原书第4版)》一1.11 组合

本节书摘来自华章出版社《面向对象的思考过程(原书第4版)》一书中的第1章,第1.11节,[美] 马特魏斯费尔德(Matt Weisfeld) 著黄博文 译更多章节内容可以访问云栖社区“华章计算机”…

Hadoop 新增删除节点

1 新增Data节点 1.1 修改/etc/hosts,增加datanode的ip 1.2 在新增加的节点启动服务 hadoop-daemon.sh start datanode yarn-daemon.sh start nodemanager 1.3 均衡block start-balancer.sh 1)如果不balance,那么cluster会把新的数据都存放在…

Java Thread Status(转)

public static enum Thread.State extends Enum<Thread.State>线程状态。线程可以处于下列状态之一&#xff1a; 1.NEW 至今尚未启动的线程的状态。 2.RUNNABLE 可运行线程的线程状态。 处于可运行状态的某一线程正在 Java 虚拟机中运行&#xff0c;但它可能正在…

秀!微软《550页图解.Net+WPF完整版》.pdf 附下载!

赶紧看看微软公司基于最新的.netwpf编写文档。对于零基础可以作为.net的快速入门教材&#xff0c;对于高级程序员而言&#xff0c;这也是你的充电之路&#xff01;NO.1资料介绍该手册,全面的介绍.net的新特性&#xff0c;看完这个资料&#xff0c;你能够对.net/c#WPF的新功能&a…

Android之编译jni出错解决办法

1、问题 1&#xff09;、我编写的类一开始都能编译&#xff0c;后来编译不过 2&#xff09;、undefined reference to Qt::value 2、解决办法 1 )、我在写Android.mk的时候这样注释了下面的代码 LOCAL_SRC_FILES : \A.cpp \B.cpp \# C.cpp \D.cpp \这样导致找不到D…

《移动App测试的22条军规》—第1章1.2节移动App的生命周期

本节书摘来自异步社区《移动App测试的22条军规》一书中的第1章&#xff0c;第1.2节移动App的生命周期&#xff0c;作者黄勇&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.2 移动App的生命周期移动App测试的22条军规&#xff08;1&#xff09;对于还处于…

C语言之常见错误解决办法

1、问题 1)、忘记写const char* p string.c_str()char* p string.data(); 自己傻逼了&#xff0c;编译不过&#xff0c;应该这样写&#xff0c;不要忘记加上const const char* p string.c_str();const char* p string.data(); 2&#xff09;、const char*p 转 char* p co…

电子商务应用课程知识整理 第一章-电子商务概述与类型

一、电子商务定义 电子商务&#xff08;Electronic Commerce&#xff0c;简称EC&#xff09;&#xff0c;是指在全球各地广泛的商业贸易活动中&#xff0c;在因特网开放的网络环境下&#xff0c;基于客户端&#xff08;浏览器、移动端&#xff09;/服务器&#xff0c;买卖双方…

nodejs中文件,目录的操作(1)

首先&#xff0c;我们对fs文件系统分为两类操作&#xff0c;第一类是xxx方法&#xff0c;第二类是xxxSync方法。所有的fs操作几乎都是这两类&#xff0c;第一类是异步回调&#xff0c;第二类是同步等待。 A.对于文件的读写操作 a.完整性读写 1.fs.readFile(filename,[options],…

如何制作自己的静态库

如何制作自己的静态库 将一些不想暴露给使用方的实现代码打包成.a库&#xff08;比如&#xff1a;百度地图sdk,写sdk的时候&#xff0c;需要使用到&#xff09; 需要创建一个静态库的工程&#xff0c;来实现代码逻辑&#xff0c;并完成对代码的打包&#xff08;.a库&#xff09…

Android之jni编译出现error: jump to label ‘XXXX’ [-fpermissive]解决办法

1、问题 Android jni里面编写C代码的时候&#xff0c;我就写了个goto语句&#xff0c;特么也提示下面的错误 error: jump to label ‘XXXX’ [-fpermissive] 这不是日了狗吗&#xff1f;用个goto也出错。 2、原因 我在使用goto的后面语句,有一些初始化变量&#xff0c;如果跳…

《Java和Android开发学习指南(第2版)》—— 1.5 本章小结

本节书摘来异步社区《Java和Android开发学习指南&#xff08;第2版&#xff09;》一书中的第1章&#xff0c;第1.5节&#xff0c;作者&#xff1a;【加】Budi Kurniawan&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.5 本章小结 本章介绍了如何下载和安…

电子商务应用课程知识整理 第二章-电子商务相关知识与技术

一、万维网 万维网&#xff08;亦作“网络”、www、Web或World Wide Web&#xff09;&#xff0c;是一个资源空间。在这个空间中包含一些有用的事务&#xff0c;有一个”统一资源标识符“&#xff08;URL&#xff09;表示。这些资源通过超文本传输协议&#xff08;HTTP&#x…

Spark 性能调优-内存设置-GC设置

http://mt.sohu.com/20150604/n414449770.shtml http://my.oschina.net/mkh/blog/330386 http://itindex.net/detail/51632-spark-%E7%BB%8F%E9%AA%8C http://itindex.net/detail/51631-spark-%E7%BB%8F%E9%AA%8C转载于:https://www.cnblogs.com/liuchangchun/p/4718313.html

Avalonia跨平台入门第十三篇之Expander控件

在前面分享的几篇中咱已经玩耍了Popup、ListBox多选、Grid动态分、RadioButton模板、控件的拖放效果、控件的置顶和置底、控件的锁定、自定义Window样式、动画效果;今天趁着空闲时间接着去摸索基于Expander控件实现的效果,最终实现的效果如下图:来看看具体的布局:Expander控件样…

Android之网络调试adb tcpip

1、问题 Android这边手机插上了第三方盾&#xff0c;需要网络调试2、解决办法 1、手机和PC在同一网段的情况下 把手机usb和连接线和电脑端连接起来&#xff0c;输入下面命令1&#xff09;、adb tcpip 55552) 、adb shell ifconfig 查看手机网络IP3&#xff09;、在电脑上ping…

《版式设计——日本平面设计师参考手册》—第1章应用对象样式

本节书摘来自异步社区《版式设计——日本平面设计师参考手册》一书中的第1章应用对象样式&#xff0c;作者Designing编辑部,更多章节内容可以访问云栖社区“异步社区”公众号查看。 应用对象样式版式设计——日本平面设计师参考手册对象样式可以帮助我们更有效率地进行工作。 h…

电子商务应用课程知识整理 第三章-网络营销

文章目录一、网络营销概述网络营销特点4Ps营销理论4Cs营销理论二、病毒营销特点传播方式&#xff08;病毒载体&#xff09;三、论坛营销优势技巧四、博客营销形式步骤五、微博营销六、微信营销优势七、软文营销软文营销的五种形式八、邮件营销效果评价一、网络营销概述 网络营…

软件概要设计做什么,怎么做

2019独角兽企业重金招聘Python工程师标准>>> 作者&#xff1a;赵磊 博客&#xff1a;http://elf8848.iteye.com 软件概要设计做什么&#xff0c;怎么做 一、软件设计一般流程&#xff1a; 1、先前的软件需求分析阶段&#xff0c;已经搞清楚了 “要解决什么问题”…

FFT算法的完整DSP实现(转)

源&#xff1a;FFT算法的完整DSP实现 傅里叶变换或者FFT的理论参考&#xff1a; [1] http://www.dspguide.com/ch12/2.htm The Scientist and Engineers Guide to Digital Signal Processing, By Steven W. Smith, Ph.D. [2] http://blog.csdn.net/v_JULY_v/article/details/…