com.ibm.mq.jmqi.JmqiException: библиотека JNI 'mqjbnd' не найдена в Eclipse - PullRequest
0 голосов
/ 29 апреля 2020

Я создал приложение 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

...