酒店 公司 安徽 网站建设,做网站动态背景的图片,怎样创建app,的wordpress主机文章目录 前言一、集成 JMS 与 IBMMQ1、pom 依赖2、yml 配置3、Properties 配置类4、Factory 连接工厂类5、配置连接认证6、配置缓存连接工厂7、配置事务管理器8、配置JMS模板9、消息发送与接收 总结 前言
SpringBoot 集成 IBMMQ#xff0c;实现两个服务间的消息通信。 一、集… 文章目录 前言一、集成 JMS 与 IBMMQ1、pom 依赖2、yml 配置3、Properties 配置类4、Factory 连接工厂类5、配置连接认证6、配置缓存连接工厂7、配置事务管理器8、配置JMS模板9、消息发送与接收 总结 前言
SpringBoot 集成 IBMMQ实现两个服务间的消息通信。 一、集成 JMS 与 IBMMQ
1、pom 依赖
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-activemq/artifactId
/dependencydependencygroupIdjavax.jms/groupIdartifactIdjavax.jms-api/artifactIdversion2.0.1/version
/dependencydependencygroupIdcom.ibm.mq/groupIdartifactIdcom.ibm.mq.allclient/artifactIdversion9.1.1.0/version
/dependency2、yml 配置
project: mq:host: 192.168.1.180 # 服务地址port: 1416 # 服务端口queue-manager: queueManager # 队列管理器username: username # 用户名password: password # 密码channel: channel # 连接通道receive-timeout: 2000 # 连接超时3、Properties 配置类
Data
Configuration
ConfigurationProperties(prefix project.mq)
public class JmsConfig {/*** 服务地址*/private String host;/*** 服务端口*/private Integer port;/*** 队列管理器*/private String queueManager;/*** 用户名*/private String username;/*** 密码*/private String password;/*** 连接通道*/private String channel;/*** 连接超时*/private long receiveTimeout;
}4、Factory 连接工厂类
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;
}CCSID要与连接到的队列管理器一致Windows下默认为1381Linux下默认为1208。1208表示UTF-8字符集建议把队列管理器的CCSID改为1208。 5、配置连接认证
Bean
UserCredentialsConnectionFactoryAdapter userCredentialsConnectionFactoryAdapter(MQQueueConnectionFactory mqQueueConnectionFactory) {UserCredentialsConnectionFactoryAdapter userCredentialsConnectionFactoryAdapter new UserCredentialsConnectionFactoryAdapter();userCredentialsConnectionFactoryAdapter.setUsername(username);userCredentialsConnectionFactoryAdapter.setPassword(password);userCredentialsConnectionFactoryAdapter.setTargetConnectionFactory(mqQueueConnectionFactory);return userCredentialsConnectionFactoryAdapter;
}如不需要账户密码链接可以跳过此步直接将mqQueueConnectionFactory注入下一步的缓存连接工厂。 6、配置缓存连接工厂
Bean
Primary
public CachingConnectionFactory cachingConnectionFactory(UserCredentialsConnectionFactoryAdapter userCredentialsConnectionFactoryAdapter) {CachingConnectionFactory cachingConnectionFactory new CachingConnectionFactory();cachingConnectionFactory.setTargetConnectionFactory(userCredentialsConnectionFactoryAdapter);cachingConnectionFactory.setSessionCacheSize(500);cachingConnectionFactory.setReconnectOnException(true);return cachingConnectionFactory;
}不配置该类则每次与MQ交互都需要重新创建连接大幅降低速度。 7、配置事务管理器
Bean
public PlatformTransactionManager jmsTransactionManager(CachingConnectionFactory cachingConnectionFactory) {JmsTransactionManager jmsTransactionManager new JmsTransactionManager();jmsTransactionManager.setConnectionFactory(cachingConnectionFactory);return jmsTransactionManager;
}8、配置JMS模板
Bean
public JmsOperations jmsOperations(CachingConnectionFactory cachingConnectionFactory) {JmsTemplate jmsTemplate new JmsTemplate(cachingConnectionFactory);jmsTemplate.setReceiveTimeout(receiveTimeout);return jmsTemplate;
}JmsOperations为JmsTemplate的实现接口。 重要不设置setReceiveTimeout时当队列为空从队列中取出消息的方法将会一直挂起直到队列内有消息 9、消息发送与接收
发送消息 可直接使用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”)即可。 总结
使用 SpringBoot JMS 集成 IBMMQ 十分的方便。