Search code examples
spring-bootjbossibm-mqspring-jms

TypeMismatchNamingException in spring boot with IBM MQ


I am trying to create a Spring boot project to read messages from a queue and do some processing.

I have defined the Jndi ConnectionFactory in application.properties

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

On starting the application I am getting the following exception:

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]

I am deploying the code on a jboss server with the given jndi.

Not sure if in this scenario some different implementation is needed for the ConnectionFactory.


Solution

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

    Solved manually with DefaultMessageListenerContainer.