日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

java 集成ibm mq 教程_Spring Boot JMS与IBM WebSphere MQ集成配置

發布時間:2023/12/29 javascript 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 集成ibm mq 教程_Spring Boot JMS与IBM WebSphere MQ集成配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Spring Boot JMS與IBM WebSphere MQ集成配置

[TOC]

前言

Spring Boot作為簡化Spring開發的框架,已經為我們集成了ActiveMQ和RabbitMQ。只需在Spring Boot配置幾個MQ的連接方式即可開箱即用。大大簡化了開發配置過程。 Spring的JavaConfig相比傳統的XML的配置方式使得配置更加的可靠和方便。 本文將會說明如何用JavaConfig的方式將Spring與IBM WebSphere MQ(以下簡稱IBM MQ)集成配置,也可以作為其他MQ的配置參考。

開發工具

IntelliJ Idea

JDK 1.8.0_121

Maven

解決依賴

獲取IBM MQ依賴包

IBM MQ相關的連接依賴包為com.ibm.mq.allclient.jar,該包不存在于公共Maven倉庫,所以我們需要找到該依賴包并手動安裝到我們本機的Maven倉庫中。 該依賴包位于[IBM MQ 安裝路徑]\java\lib下,Windows下的默認安裝路徑為C:\Program Files\IBM\WebSphere MQ\,Linux下的默認安裝路徑為/opt/mqm/。可以將該包復制到開發機上。 通過以下命令安裝該包到本地倉庫

mvn install:install-file -Dfile=[jar包所在路徑] -DgroupId=com.ibm -DartifactId=mq.allclient -Dversion=1.0 -Dpackaging=jar

在Idea中可以按四次Shift鍵調出全局搜索框,鍵入Execute Maven Goal,等待搜索結果后按回車,即可執行Maven命令,在此執行命令時不需要鍵入命令開頭的mvn。

添加依賴到項目

編輯項目pom.xml文件,添加以下三個依賴,分別為

spring-boot-starter-activemq:即Spring JMS

javax.jms-api

mq.allclient:即上一步中安裝到本地的包

org.springframework.boot

spring-boot-starter-activemq

javax.jms

javax.jms-api

2.0.1

com.ibm

mq.allclient

1.0

MQ連接參數

配置Spring Boot配置文件,application.yml,此處用的是yaml格式配置文件,application.properties的配置方法可以參考Spring Boot的說明。

project:

mq:

host: 192.168.1.180

port: 1416

queue-manager: QM #隊列管理器

channel: mqm.SVRCONN #服務器連接通道

username: mqm #用戶名

password: 123456 #密碼

receive-timeout: 2000 #連接超時

JmsConfig

注入連接參數

建立JmsConfig類,添加注解@Configuration,并將以上屬性注入到此類。

@Configuration

public class JmsConfig {

@Value("${project.mq.host}")

private String host;

@Value("${project.mq.port}")

private Integer port;

@Value("${project.mq.queue-manager}")

private String queueManager;

@Value("${project.mq.channel}")

private String channel;

@Value("${project.mq.username}")

private String username;

@Value("${project.mq.password}")

private String password;

@Value("${project.mq.receive-timeout}")

private long receiveTimeout;

}

配置連接工廠

在JmsConfig類添加以下方法。

CCSID要與連接到的隊列管理器一致,Windows下默認為1381,Linux下默認為1208。1208表示UTF-8字符集,建議把隊列管理器的CCSID改為1208

@Bean

public MQQueueConnectionFactory mqQueueConnectionFactory() {

MQQueueConnectionFactory mqQueueConnectionFactory = new MQQueueConnectionFactory();

mqQueueConnectionFactory.setHostName(host);

try {

mqQueueConnectionFactory.setTransportType(WMQConstants.WMQ_CM_CLIENT);

mqQueueConnectionFactory.setCCSID(1208);

mqQueueConnectionFactory.setChannel(channel);

mqQueueConnectionFactory.setPort(port);

mqQueueConnectionFactory.setQueueManager(queueManager);

} catch (Exception e) {

e.printStackTrace();

}

return mqQueueConnectionFactory;

}

配置連接認證

如不需要賬戶密碼鏈接可以跳過此步,直接將mqQueueConnectionFactory注入下一步的緩存連接工廠。

@Bean

UserCredentialsConnectionFactoryAdapter userCredentialsConnectionFactoryAdapter(MQQueueConnectionFactory mqQueueConnectionFactory) {

UserCredentialsConnectionFactoryAdapter userCredentialsConnectionFactoryAdapter = new UserCredentialsConnectionFactoryAdapter();

userCredentialsConnectionFactoryAdapter.setUsername(username);

userCredentialsConnectionFactoryAdapter.setPassword(password);

userCredentialsConnectionFactoryAdapter.setTargetConnectionFactory(mqQueueConnectionFactory);

return userCredentialsConnectionFactoryAdapter;

}

配置緩存連接工廠

不配置該類則每次與MQ交互都需要重新創建連接,大幅降低速度。

@Bean

@Primary

public CachingConnectionFactory cachingConnectionFactory(UserCredentialsConnectionFactoryAdapter userCredentialsConnectionFactoryAdapter) {

CachingConnectionFactory cachingConnectionFactory = new CachingConnectionFactory();

cachingConnectionFactory.setTargetConnectionFactory(userCredentialsConnectionFactoryAdapter);

cachingConnectionFactory.setSessionCacheSize(500);

cachingConnectionFactory.setReconnectOnException(true);

return cachingConnectionFactory;

}

配置事務管理器

不使用事務可以跳過該步驟。如需使用事務,可添加注解@EnableTransactionManagement到程序入口類中,事務的具體用法可參考Spring Trasaction。

@Bean

public PlatformTransactionManager jmsTransactionManager(CachingConnectionFactory cachingConnectionFactory) {

JmsTransactionManager jmsTransactionManager = new JmsTransactionManager();

jmsTransactionManager.setConnectionFactory(cachingConnectionFactory);

return jmsTransactionManager;

}

配置JMS模板

JmsOperations為JmsTemplate的實現接口。

重要:不設置setReceiveTimeout時,當隊列為空,從隊列中取出消息的方法將會一直掛起直到隊列內有消息

@Bean

public JmsOperations jmsOperations(CachingConnectionFactory cachingConnectionFactory) {

JmsTemplate jmsTemplate = new JmsTemplate(cachingConnectionFactory);

jmsTemplate.setReceiveTimeout(receiveTimeout);

return jmsTemplate;

}

用法

發送消息

可直接使用jmsOperations的convertAndSend(String, Object)方法,第一個參數為隊列名稱,第二個參數為需發送的對象。

重要:發送的對象需實現序列化接口

@Autowired

JmsOperations jmsOperations;

public void send(User user){

jmsOperations.convertAndSend("QUEUE.USER", user);

}

接收消息

可直接使用jmsOperations的receiveAndConvert(String)方法,第一個參數為隊列名稱。

@Autowired

JmsOperations jmsOperations;

public void receive(User user){

jmsOperations.receiveAndConvert("QUEUE.USER");

}

開啟事務

如需使用事務,只需在方法添加注解@Transactional(value = "jmsTransactionManager")即可。

有問題請留言

總結

以上是生活随笔為你收集整理的java 集成ibm mq 教程_Spring Boot JMS与IBM WebSphere MQ集成配置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。