当前位置: 首页 > 知识库问答 >
问题:

SpringBoot JMS侦听器:无法刷新目标的JMS连接

朱兴安
2023-03-14

我有Spring启动应用程序,它通过@JmsListener注释从组件类中侦听 IBM MQ 队列。MQ 属性(主机名、通道、端口等)是从 yaml 文件设置的。

 @JmsListener(destination = "<QueueName>")
 public void receiveMessage(BytesMessage msg) { 
     //snippet to read msg
 }

MQ 依赖项在分级构建中添加,如下所示:

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 ERROR DefaultMessageListenerContainer-无法刷新目标“QueueName”的JMS连接-使用FixedBackOff{间隔=5000,当前尝试=34,最大尝试=无限}重试。原因:JMSFMQ6312:Java(tm)MQI中发生异常。;嵌套异常com.ibm.mq.jmqi.JmqiException:CC=2;RC=2195;AMQ9546:收到错误返回码。[1=java.lang.reflect.InvocationTargetException[null],3=NativeConstructorAccessorImpl.newInstance0]

需要帮助解决此问题。

共有1个答案

凌善
2023-03-14

我遇到了类似的问题。这是因为缺少与JMS应用程序IBMMQ连接上的配置。在我的例子中,我遇到了一个与授权相关的异常,但我为IBMmq设置了正确的用户凭据。当我检查IBMmq站点时,用户名不同,这不是我在Spring应用程序中配置的。

#IBM MQ JMS Configuration
ibm.mq.queueManager={QUEUE_MANAGER}
ibm.mq.channel={CHANNEL_NAME}
ibm.mq.connName={HOST_NAME(HOST_PORT)}
ibm.mq.user={USER_NAME}
ibm.mq.password={PASSWORD}

然后,我添加了下面的属性,以便在使用队列管理器进行身份验证时使用兼容模式。这里我们覆盖了身份验证模式。对于MQ V8或V9的当前维护级别,通常不需要这样做,但是一些早期的级别有时会出错,然后可以将该标志设置为“false”

ibm.mq.user-authentication-m-q-c-s-p=false

请参阅此页面了解更多详细信息

 类似资料:
  • 问题内容: 我们有一个Java侦听器,它从JBossMQ的队列中读取文本消息。如果必须重新启动JBoss,则侦听器将不会重新连接并重新开始阅读消息。我们只是每2分钟在侦听器的日志文件中收到一条消息,指出该消息无法连接。我们在代码或JBossMQ中没有设置什么吗?我是JMS的新手,因此将非常感谢您的帮助。谢谢。 问题答案: 您应该在客户端代码中实现javax.jms.ExceptionListene

  • 现在当我启动基于spring的应用程序时。我在调试器中看到,我的侦听器方法注册了,但是Spring不连接到ActiveMQ队列,我可以通过查看ActiveMQ web控制台轻松地看到这一点。此外,我没有看到任何来自spring的日志输出,而JMS的东西是这样做的。 我错过什么了吗?从这里走下去最好的路是什么?当然,我也测试了从ActiveMQ的web控制台中发送消息,但是如果没有客户端连接,就没有

  • 1天前 嗨,当试图根据http://wso2.org/project/esb/java/4.0.3/docs/samples/transport_samples.html/sample250使用wso2 esb侦听来自JMS队列的消息时,我遇到了一个异常,如下所示 XML解析错误:格式不正确的位置: org.apache.axis2.axisfault:系统无法从jms://jmslistener

  • 我使用JMS从IBM MQ message Broker发送接收消息。我目前正在处理侦听器服务,抛出未处理的异常和消息发送回队列而没有确认。我希望服务重试一个可配置的次数,并抛出表示监听器服务不可用的完全异常消息。 我的监听器和容器工厂如下所示。

  • 该应用程序使用Spring JMS Listener连接到JMS队列,并在WAS 8.5中部署。x、 使用spring应用程序上下文xml,bean用初始化,目标为。 在class方法中,代码试图使用查找JNDI引用,代码片段如下, 应用程序在处理消息时抛出以下异常。 例外:javax。命名。ConfigurationException:无法完成“java:”名称上的JNDI操作,因为服务器运行时

  • MyAlertDialog在尝试将上下文设置为侦听器时抛出ClassCastException。我正在从片段调用MyAlertDailog。 我正在使用在android开发文档中找到的指南。 https://developer.android.com/guide/topics/ui/dialogs#PassingEvents 我的片段 MyAlertDialog 错误报告