Я создал приложение Spring Boot с JMS. Я использую IBM MQ7 и пытаюсь установить соединение через клиент для доступа к очереди с помощью Spring JMS. Может кто-нибудь помочь, пожалуйста, я новичок ie.
Я получаю ошибку в затмении
Could not refresh JMS Connection for destination 'queue1' - retrying in 5000 ms. Cause: JMSFMQ6312: An exception occurred in the Java(tm) MQI.; nested exception is com.ibm.mq.jmqi.JmqiException: CC=2;RC=2495;AMQ8568: The native JNI library 'mqjbnd' was not found.
Однако я попытался настроить java .library.path в аргументах JVM & Eclipse.ini в затмении, но все еще получает ту же ошибку.
In Run Configuration: VM Arguments
-Djava.library.path="C:\Program Files (x86)\IBM\WebSphere MQ\java\lib64\mqjbnd.dll"
Я следовал
https://www.ibm.com/support/knowledgecenter/SSFKSJ_7.5.0/com.ibm.mq.dev.doc/q031570_.htm
Я все еще получаю то же исключение.
Конфигурация JMS:
@Configuration
@ComponentScan(basePackageClasses =
{
MessageListener.class
})
public class JmsConfig {
private static final Logger logger = LoggerFactory.getLogger(JmsConfig.class);
@Value("${ibm.mq.hostname}")
private String host;
@Value("${ibm.mq.port}")
private Integer port;
@Value("${ibm.mq.manager}")
private String queueManager;
@Value("${ibm.mq.channel}")
private String channel;
@Value("${ibm.mq.queue}")
private String queue;
@Value("${ibm.mq.timeout}")
private long timeout;
@Value("${ibm.mq.username}")
private String username;
@Value("${ibm.mq.password}")
private String password;
@Resource
private MessageListener listener;
@Bean
public MQTopicConnectionFactory mqTopicConnectionFactory() {
MQTopicConnectionFactory mqTopicConnectionFactory = new MQTopicConnectionFactory();
try {
mqTopicConnectionFactory.setHostName(host);
mqTopicConnectionFactory.setQueueManager(queueManager);
mqTopicConnectionFactory.setPort(port);
mqTopicConnectionFactory.setChannel(channel);
mqTopicConnectionFactory.setTransportType(CommonConstants.WMQ_CM_CLIENT);
mqTopicConnectionFactory.setCCSID(1208);
} catch (Exception e) {
logger.error("Error connecting to MQ: {}",e.getMessage());
}
return mqTopicConnectionFactory;
}
@Bean
UserCredentialsConnectionFactoryAdapter userCredentialsConnectionFactoryAdapter(MQQueueConnectionFactory mqQueueConnectionFactory) {
UserCredentialsConnectionFactoryAdapter userCredentialsConnectionFactoryAdapter = new UserCredentialsConnectionFactoryAdapter();
userCredentialsConnectionFactoryAdapter.setUsername(username);
userCredentialsConnectionFactoryAdapter.setPassword(password);
userCredentialsConnectionFactoryAdapter.setTargetConnectionFactory(mqQueueConnectionFactory);
return userCredentialsConnectionFactoryAdapter;
}
@Bean
@Primary
public MQQueueConnectionFactory mqQueueConnectionFactory() {
MQQueueConnectionFactory mqQueueConnectionFactory = new MQQueueConnectionFactory();
try {
mqQueueConnectionFactory.setHostName(host);
mqQueueConnectionFactory.setQueueManager(queueManager);
mqQueueConnectionFactory.setPort(port);
mqQueueConnectionFactory.setChannel(channel);
mqQueueConnectionFactory.setTransportType(CommonConstants.WMQ_CM_CLIENT);
mqQueueConnectionFactory.setCCSID(1208);
} catch (Exception e) {
logger.error("Error connecting to MQ: {}",e.getMessage());
}
return mqQueueConnectionFactory;
}
@Bean
public DefaultMessageListenerContainer myAppListenerContainer()
{
DefaultMessageListenerContainer listenerContainer = new DefaultMessageListenerContainer();
listenerContainer.setConnectionFactory(mqQueueConnectionFactory());
listenerContainer.setDestinationName(queue);
listenerContainer.setMessageListener(listener);
//listenerContainer.setMaxConcurrentConsumers(maxConsumers);
listenerContainer.setSessionTransacted(true);
return listenerContainer;
}
@Bean
@Primary
public CachingConnectionFactory cachingConnectionFactory(UserCredentialsConnectionFactoryAdapter userCredentialsConnectionFactoryAdapter) {
CachingConnectionFactory cachingConnectionFactory = new CachingConnectionFactory();
cachingConnectionFactory.setTargetConnectionFactory(userCredentialsConnectionFactoryAdapter);
cachingConnectionFactory.setSessionCacheSize(500);
cachingConnectionFactory.setReconnectOnException(true);
return cachingConnectionFactory;
}
@Bean
public JmsTemplate queueTemplate(CachingConnectionFactory mqQueueConnectionFactory) {
JmsTemplate jmsTemplate = new JmsTemplate(mqQueueConnectionFactory);
jmsTemplate.setReceiveTimeout(timeout);
return jmsTemplate;
}
}
![enter image description here](https://i.stack.imgur.com/1vxL5.gif)