我有 Spring Boot 应用程序,它通过@JmsListener
如下注释从组件类中侦听 IBM MQ 队列。MQ 属性(主机名、通道、端口等)是从yaml文件中设置的。
@JmsListener(destination = "<QueueName>")
public void receiveMessage(BytesMessage msg) {
//snippet to read msg
}
MQ 依赖项在 gradle build 中添加如下,
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: Error return code received。[1=java.lang.reflect.InvocationTargetException[null],3=NativeConstructorAccessorImpl.newInstance0]
需要帮助来解决此问题。