如题,
//*START=====================================CHANNEL=====================================START*//
/*********************
* 配置连接工厂 *
*********************/
@Bean(name = "bidsMqQueueConnectionFactory")
public MQQueueConnectionFactory bidsMqQueueConnectionFactory(
@Value("${ibm.mq.host}") String host,
@Value("${ibm.mq.port}") Integer port,
@Value("${ibm.mq.ccsid}") Integer ccsid,
@Value("${ibm.mq.channel.jids}") String channel,
@Value("${ibm.mq.queue.manager}") String queueManager
) {
MQQueueConnectionFactory mqQueueConnectionFactory = new MQQueueConnectionFactory();
mqQueueConnectionFactory.setHostName(host);
try {
mqQueueConnectionFactory.setTransportType(CommonConstants.WMQ_CM_CLIENT);
mqQueueConnectionFactory.setCCSID(ccsid);
mqQueueConnectionFactory.setChannel(channel);
mqQueueConnectionFactory.setPort(port);
mqQueueConnectionFactory.setQueueManager(queueManager);
} catch (Exception e) {
log.error("创建卷烟智能制造ESB连接工厂异常,原因:", e);
}
return mqQueueConnectionFactory;
}
/****************************************************************************************************************
* 配置连接认证 *
* 如不需要账户密码链接可以跳过此步,直接将MqQueueConnectionFactory注入下一步的缓存连接工厂 *
****************************************************************************************************************/
@Bean(name = "bidsUserCredentialsConnectionFactoryAdapter")
UserCredentialsConnectionFactoryAdapter bidsUserCredentialsConnectionFactoryAdapter(
// @Value("${spring.ibmmq.bids.username}") String username,
// @Value("${spring.ibmmq.bids.password}") String password,
@Qualifier("bidsMqQueueConnectionFactory") MQQueueConnectionFactory mqQueueConnectionFactory
) {
UserCredentialsConnectionFactoryAdapter userCredentialsConnectionFactoryAdapter = new UserCredentialsConnectionFactoryAdapter();
// userCredentialsConnectionFactoryAdapter.setUsername(username);
// userCredentialsConnectionFactoryAdapter.setPassword(password);
userCredentialsConnectionFactoryAdapter.setTargetConnectionFactory(mqQueueConnectionFactory);
return userCredentialsConnectionFactoryAdapter;
}
/**************************************************************************
* 配置缓存连接工厂: *
* 不配置该类则每次与MQ交互都需要重新创建连接,大幅降低速度 *
**************************************************************************/
@Bean(name = "bidsCachingConnectionFactory")
@Primary
public CachingConnectionFactory bidsCachingConnectionFactory(
@Qualifier("bidsUserCredentialsConnectionFactoryAdapter") UserCredentialsConnectionFactoryAdapter userCredentialsConnectionFactoryAdapter) {
CachingConnectionFactory cachingConnectionFactory = new CachingConnectionFactory();
cachingConnectionFactory.setTargetConnectionFactory(userCredentialsConnectionFactoryAdapter);
cachingConnectionFactory.setSessionCacheSize(500);
cachingConnectionFactory.setReconnectOnException(true);
return cachingConnectionFactory;
}
/**********************************************************************************************************
* 配置DefaultJmsListenerContainerFactory,用@JmsListener注解来监听队列消息时候 *
* 尤其存在多个监听的时候,通过实例化配置DefaultJmsListenerContainerFactory来控制消息分发 *
* 如果只有一个连接工厂,即可跳过此步骤,因为默认会创建一个监听容器工厂 *
**********************************************************************************************************/
@Bean(name = "bidsJmsQueueListenerContainerFactory")
@Primary
public DefaultJmsListenerContainerFactory bidsJmsQueueListenerContainerFactory(
@Qualifier("bidsCachingConnectionFactory") CachingConnectionFactory cachingConnectionFactory
) {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
factory.setConnectionFactory(cachingConnectionFactory);
//设置连接数
factory.setConcurrency("3-10");
//重连间隔时间
factory.setRecoveryInterval(1000L);
return factory;
}
/**********************************************************************************************************************
* 配置JMS模板:可以在方法中通过@autowired的方式注入模板 *
* JmsOperations为JmsTemplate的实现接口 *
* 重要: 不设置setReceiveTimeout时,当队列为空,从队列中取出消息的方法将会一直挂起直到队列内有消息 *
* 如果只是接收消息,可以不配置此步 *
**********************************************************************************************************************/
@Bean(name = "bidsJmsOperations")
public JmsOperations bidsJmsOperations(
@Value("${ibm.mq.timeout}") Integer receiveTimeout,
@Qualifier("bidsCachingConnectionFactory") CachingConnectionFactory cachingConnectionFactory) {
JmsTemplate jmsTemplate = new JmsTemplate(cachingConnectionFactory);
jmsTemplate.setReceiveTimeout(receiveTimeout);
return jmsTemplate;
}
//*END======================================CHANNEL======================================END*//
我只配置了一个就正常启动,但是当我配置第二个同queueManager下不同channel时,就会在启动时报错
因为不是对IBMMQ特别了解,所以想请教一下。
谢谢。