安装WebSphere MQ资源适配器:
从安装目录复制wmq.jmsra.rar文件到服务器的部署目录中,例如:<安装路径>/server/default/deploy。此时资源适配器将会自动选择服务器。
安装WebSphere MQ扩展事务客户端:
WebSphere MQ扩展事务客户端允许你使用XA分布式事务,并用客户端模式连接到WebSphere MQ队列管理器。要将客户端安装在JBoss,需要从安装目录复制com.ibm.mqetclient.jar文件到服务器的lib目录中,例如<安装路径>/server/default/lib。
为你的应用程序配置资源适配器:
WebSphere MQ资源适配器允许你定义一些全局的属性。在JBoss中JCA出站流的资源定义在-ds.xml文件,名为wmq.jmsra-ds.xml。
此文件的概要如下:
<?xml version="1.0" encoding="UTF-8"?>
<connection-factories>
<!-- mbeans defining JCA administered objects -->
<mbean/>
<!-- JCA Connection factory definitions -->
<tx-connection-factory/>
</connection-factories>
从上可以看出JCA连接工厂的定义在<tx-connection-factory>元素,而且JMS队列和主题被定义在JCA的管理对象mbean里面。
简单的两个队列-入站和出站的完整示例如下:
在JBoss启动脚本中占位符属性被定义为:
-Dchannel=MQTEST -DhostName=localhost -DqueueManager=TST_MGR
配置入站消息传递:
消息传递配置在jboss.xml文件中,这个文件的内容会有所不同,但大致如下:
jboss.xml
必须指定目标类型和名称属性。其他属性都是可选的,如果省略,将使用其默认值。
一个简单的MDB定义入站消息如下所示:
[TOC]
Spring Boot作为简化Spring开发的框架,已经为我们集成了ActiveMQ和RabbitMQ。只需在Spring Boot配置几个MQ的连接方式即可开箱即用。大大简化了开发配置过程。
Spring的JavaConfig相比传统的XML的配置方式使得配置更加的可靠和方便。
本文将会说明如何用JavaConfig的方式将Spring与IBM WebSphere MQ(以下简称IBM MQ)集成配置,也可以作为其他MQ的配置参考。
17年后官方maven仓库以有相关依赖
IBM MQ相关的连接依赖包为 com.ibm.mq.allclient.jar ,该包不存在于公共Maven仓库,所以我们需要找到该依赖包并手动安装到我们本机的Maven仓库中。
该依赖包位于 [IBM MQ 安装路径]\java\lib 下,Windows下的默认安装路径为 C:\Program Files\IBM\WebSphere MQ\ ,Linux下的默认安装路径为 /opt/mqm/ 。可以将该包复制到开发机上。
通过以下命令安装该包到本地仓库
在Idea中可以按四次Shift键调出全局搜索框,键入Execute Maven Goal,等待搜索结果后按回车,即可执行Maven命令, 在此执行命令时不需要键入命令开头的 mvn 。
编辑项目pom.xml文件,添加以下三个依赖,分别为
配置Spring Boot配置文件,application.yml,此处用的是yaml格式配置文件,application.properties的配置方法可以参考Spring Boot的说明。
建立 JmsConfig 类,添加注解 @Configuration ,并将以上属性注入到此类。
在JmsConfig类添加以下方法。
不配置该类则每次与MQ交互都需要重新创建连接,大幅降低速度。
不使用事务可以跳过该步骤。如需使用事务,可添加注解 @EnableTransactionManagement 到程序入口类中,事务的具体用法可参考Spring Trasaction。
JmsOperations为JmsTemplate的实现接口。
重要:不设置setReceiveTimeout时,当队列为空,从队列中取出消息的方法将会一直挂起直到队列内有消息
可直接使用jmsOperations的convertAndSend(String, Object)方法,第一个参数为队列名称,第二个参数为需发送的对象。
重要:发送的对象需实现序列化接口
可直接使用jmsOperations的receiveAndConvert(String)方法,第一个参数为队列名称。
如需使用事务,只需在方法添加注解 @Transactional(value = "jmsTransactionManager") 即可。
有问题请留言
amqsget 应用读完消息30秒后会结束
参考资料: https://www.ibm.com/support/knowledgecenter/zh/SSFKSJ_8.0.0/com.ibm.mq.pro.doc/q121700_.htm
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)