




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
将Sun的Open Message Queue与Spring集成刘岩Email:1. 前言基于JMS标准的消息中间件实现的产品有很多,JBossMQ、ActiveMQ、OpenMQ、OpenJMS等等,最常用的还是apache的ActiveMQ。有时也使用Sun的OpenMQ。在官网/处可以下载。Open Message Queue是Sun Java System Message Queue的一个开源版本。Open message queue是一个企业级,可升级,非常成熟的消息服务器。它为面向消息的系统集成提供一套完整的JMS(Java Message Service )实现。由于Open MQ源自Sun的Java Message Queue,所以其具有Java System Message Queue拥有的所有特性,功能和性能。2. 环境配置下载后将相关的jar拷贝到项目的classpath下面。笔者在此为了安全起见,引入了很多jar包,将语言包都引入了。各位读者可以因地制宜。以下是引入jar包的列表lib/openmqjar/common-message.jarlib/openmqjar/fscontext.jarlib/openmqjar/grizzly.jarlib/openmqjar/imq_de.jarlib/openmqjar/imq_es.jarlib/openmqjar/imq_fr.jarlib/openmqjar/imq_it.jarlib/openmqjar/imq_ja.jarlib/openmqjar/imq_ko.jarlib/openmqjar/imq_pt_BR.jarlib/openmqjar/imq_zh_CN.jarlib/openmqjar/imq_zh_TW.jarlib/openmqjar/imq.jarlib/openmqjar/imqadmin.jarlib/openmqjar/imqbridgemgr.jarlib/openmqjar/imqbroker.jarlib/openmqjar/imqjmsbridge.jarlib/openmqjar/imqjmsra.rarlib/openmqjar/imqjmx_de.jarlib/openmqjar/imqjmx_es.jarlib/openmqjar/imqjmx_fr.jarlib/openmqjar/imqjmx_it.jarlib/openmqjar/imqjmx_ja.jarlib/openmqjar/imqjmx_ko.jarlib/openmqjar/imqjmx_pt_BR.jarlib/openmqjar/imqjmx_zh_CN.jarlib/openmqjar/imqjmx_zh_TW.jarlib/openmqjar/imqjmx.jarlib/openmqjar/imql10n_server_de.jarlib/openmqjar/imql10n_server_es.jarlib/openmqjar/imql10n_server_fr.jarlib/openmqjar/imql10n_server_it.jarlib/openmqjar/imql10n_server_ja.jarlib/openmqjar/imql10n_server_ko.jarlib/openmqjar/imql10n_server_pt_BR.jarlib/openmqjar/imql10n_server_zh_CN.jarlib/openmqjar/imql10n_server_zh_TW.jarlib/openmqjar/imqservlet.jarlib/openmqjar/imqstomp.jarlib/openmqjar/imqutil.jarlib/openmqjar/imqxm.jarlib/openmqjar/jaxm-api.jarlib/openmqjar/jhall.jarlib/openmqjar/jms.jarlib/openmqjar/jta.jarlib/openmqjar/protobuf-2.3.0.jar3. 之后项目加入Spring的相关jar包。增加Spring配置文件内容如下::7676adminadmintrue35000RANDOM4. 消息监听器类代码如下/* * JMS消息消费者。 * 接收JMS消息后获得router想要的消息后,调用router接口更新本地缓存 * author liuyan * */public class JMSMessageListener implements MessageListener private Logger log = Logger.getLogger(JMSMessageListener.class.getName();/* * 接收JMS消息后的业务处理 */public void onMessage(Message message) (接收消息);byte byteMessage = JMSByteConverterUtil.ConverterMessageToBttes(message);try (将转型成实体对象);/ catch (InvalidProtocolBufferException e) log.error(JMS异常 + e.getMessage();e.printStackTrace(); catch (Exception e) log.error(其他异常 + e.getMessage();e.printStackTrace();因为一些原因此处就不给出完整代码了反正是获取一个字节流后,转成对象,直接从对象中获取想要的信息。转成对象的辅助类如下/* * 对获得的消息对象进行转型 * author liuyan */public class JMSByteConverterUtil private static Logger log = Logger.getLogger(JMSMessageListener.class.getName();/* * 对获得的消息对象进行转型 * param message * return */public static byte ConverterMessageToBttes(Message message) if (message = null) log.error(消息对象为空);return null; else if (message instanceof BytesMessage) log.debug(消息强制转型BytesMessage);BytesMessage bytesMessage = (BytesMessage) message;byte messageBytes;try log.debug(建立空的消息二进制数组);messageBytes = new byte(int) bytesMessage.getBodyLength();log.debug(往二进制数组中写进二进制信息);bytesMessage.readBytes(messageBytes);log.debug(messageBytes.length= + messageBytes.length);return messageBytes; catch (JMSException e) log.error(JMS错误: + e.getMessage();e.printStackTrace();return null;elselog.error(消息对象不能正确转型);return null;5. 启动消息监听器开启OpenMQ的服务,启动OpenMQ_HOMEmqbin下的imqcmd.exe命令启动消息消费者很简单,代码如下public class MessageConsumer /* * param args */public static void main(String args) ApplicationContext applicationContext = new ClassPathXmlApplicationContext(new String classpath:/spring/applicationContext-openmq-jms.xml );System.out.println(applicationContext.getId();6. 消息发送者启动消息消费者服务后,写一个测试类测试一下消息的,代码如下public class MessageSender /* * param args * throws JMSException */public static void main(String args) throws JMSException ConnectionFactory myConnFactory;myConnFactory = new com.sun.messaging.ConnectionFactory();myConnFactory.setProperty(ConnectionConfiguration.imqAddressList,mq:/:7676);myConnFactory.setProperty(ConnectionConfiguration.imqReconnectEnabled,true);Connection myConn = myConnFactory.createConnection();myConn.start();/ Step 4:/ Create a session within the connection.Session mySess = myConn.createSession(false, Session.AUTO_ACKNOWLEDGE);Topic myTopic = new com.sun.messaging.Topic(testmq);/ .Queue(testmq);MessageProducer myMsgProducer = mySess.createProducer(myTopic);ObjectMessage objectMessage = mySess.createObjectMessage();RouterMessageBean routerMessageBean = new RouterMessageBean();routerMessageBean.setDbName(mysql-test);routerMessageBean.setUserName(liuyan);routerMessageBean.setMaster(null);routerMessageBean.setSlave(null)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO 12855:2025 EN Electronic fee collection - Information exchange between service provision and toll charging
- 【正版授权】 ISO 5068-2:2025 EN Brown coals and lignites - Determination of moisture - Part 2: Indirect gravimetric method for moisture in the analysis sample
- 【正版授权】 ISO 24608:2025 EN Essential oil of lavandin super Lavandula x intermedia Emeric ex Loisel.‘super’(Ex Lavandula angustifolia Mill. x Lavandula latifolia Medik.‘super’)
- 【正版授权】 IEC 61173:1992 EN-D Overvoltage protection for photovoltaic (PV) power generating systems - Guide
- 【正版授权】 IEC 60614-2-5:1992 FR-D Specifications for conduits for electrical installations - Part 2: Particular specifications for conduits - Section 5: Flexible conduits
- GB/T 19626-2025DNA防伪技术产品通用技术要求
- 校园食堂安全知识培训课件
- 校园消防知识培训课件新闻
- 模拟公务员面试题及答案
- 民法学2考试试题及答案
- 2025年山西省教师职称考试(理论知识)历年参考题库含答案详解(5套)
- 2025年保定高阳县招聘社区工作者考试试题(含答案)
- 火星基地建设方案-洞察及研究
- 【课件】新学期新征程 课件-2025-2026学年高一上学期开学第一课主题班会
- 心里减压培训
- 《中国女性乳腺癌患者糖尿病和糖尿病前期管理专家共识》 (2024版)
- 6大国工匠百炼成器教案-蓝色
- 蜂种买卖合同
- 《智能产线设计与仿真》课程标准
- 2024-2029年高速示波器行业市场现状供需分析及市场深度研究发展前景及规划投资研究报告
- 人教版八年级下册数学期末40道压轴题训练(解析版)
评论
0/150
提交评论