我有一个Spring Boot应用程序,它通过组件类中的@JmsListener
注释侦听IBM MQ Queue。 MQ属性(主机名,通道,端口等)是从 yaml 文件设置的。
@JmsListener(destination = "<QueueName>")
public void receiveMessage(BytesMessage msg) {
//snippet to read msg
}
MQ依赖项如下所示在gradle构建中添加,
compile("com.ibm.mq:mq-jms-spring-boot-starter:0.0.2") {
exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
}
只要我在带有Tomcat容器的本地应用程序上运行该应用程序,它就可以正常工作并监听消息。但是,如果我将其打包为EAR并部署到Wesbphere8.5服务器,它将抛出以下异常,并且侦听器不会从队列中读取消息。我确认所有运行时依赖项都打包在EAR中。尝试了不同版本的MQ依赖关系,但没有运气。
2018-07-10 15:21:16,531错误DefaultMessageListenerContainer-无法刷新目标'QueueName'的JMS连接- 使用FixedBackOff {interval = 5000,currentAttempts = 34,重试 maxAttempts = unlimited}。原因:JMSFMQ6312:发生异常 Java(tm)MQI。嵌套的异常是com.ibm.mq.jmqi.JmqiException: CC = 2; RC = 2195; AMQ9546:收到错误返回码 [1 = java.lang.reflect.InvocationTargetException [null],3 = NativeConstructorAccessorImpl.newInstance0]
需要帮助来解决此问题。