Исключение TypeMismatchNamingException при загрузке spring с IBM MQ

#spring-boot #jboss #ibm-mq #spring-jms

#весенняя загрузка #jboss #ibm-mq #spring-jms

Вопрос:

Я пытаюсь создать проект Spring boot для чтения сообщений из очереди и выполнения некоторой обработки.

Я определил Jndi ConnectionFactory в application.properties

 spring.jms.jndi-name=java:/MyConnectionFactory
  

При запуске приложения я получаю следующее исключение:

 Caused by: org.springframework.jndi.TypeMismatchNamingException: Object of type [class com.ibm.mq.connector.outbound.ConnectionFactoryImpl] available at JNDI location [java:/MyConnectionFactory] is not assignable to [javax.jms.ConnectionFactory]
  

Я развертываю код на сервере jboss с заданным jndi.

Не уверен, что в этом сценарии для ConnectionFactory требуется какая-то другая реализация.

Ответ №1:

 @Bean public DefaultMessageListenerContainer orderMessageListenerContainer() {
 DefaultMessageListenerContainer endpoint = new DefaultMessageListenerContainer();
 endpoint.setMessageListener(new YourMessageListener());
 endpoint.setDestination("yourDestination");
 endpoint.setConnectionFactory(connectionFactory());
 return orderDefaultJmsListenerContainerFactory().createListenerContainer(endpoint);
}
  

Решается вручную с помощью DefaultMessageListenerContainer.

Комментарии:

1. Я попытался немного отформатировать ваш код, но если вы отредактируете ответ, вы можете просто вставить оригинал между строками, указав на них только «, это позволит расположить его так, как вы хотите (шрифт фиксированной ширины).