【问题标题】:IBM MQ ISSUE in Apache Camel because Spring JMS ListenerApache Camel 中的 IBM MQ ISSUE 因为 Spring JMS 侦听器
【发布时间】:2015-04-22 05:04:15
【问题描述】:

我是使用 Apache camel 的 IBM MQ 的新手。以下是我的配置

<from IBM MQ>
<parallel>
 <to ACTIVE MQ>
 <to IBM MQ>
</parallel>

我的应用程序在 Spring Container 中运行。有时我收到以下警告,因此我的路线不起作用(IBM MQ 未读取 msg)。为了得到警告,Route is not working 。

例外

org.springframework.jms.listener.DefaultMessageListenerContainer handleListenerSetupFailure 警告:目标“临时”的 JMS 消息侦听器调用程序设置失败 - 尝试恢复。原因:用户 XXXXXX 无权创建:temp-queue://ID:IP Address-1:26:1 2015 年 2 月 20 日上午 2:59:07 org.springframework.jms.listener.DefaultMessageListenerContainer refreshConnectionUntilSuccessful 信息:成功刷新 JMS 连接 2015 年 2 月 20 日上午 2:59:08 org.springframework.jms.listener.DefaultMessageListenerContainer handleListenerSetupFailure 警告:目标“临时”的 JMS 消息侦听器调用程序设置失败 - 尝试恢复。原因:JMSWMQ2008:无法打开 MQ 队列 'SYSTEM.DEFAULT.MODEL.QUEUE'。;嵌套异常是 com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ call failed with compcode '2' ('MQCC_FAILED') reason '2035' ('MQRC_NOT_AUTHORIZED')。**

我正在使用 Active & IBM MQ,为什么 Spring JMS Listener 会抛出警告?

【问题讨论】:

  • Camel 正在尝试创建一个临时队列(我对请求/回复场景的最佳猜测),而您配置的用户无权这样做。这一切都写在堆栈跟踪中,而 Spring JMS 支持与此无关。
  • 请告诉我为什么骆驼应该在将味精发布到另一个队列时创建临时队列?如果我更改为 inonly 模式,它会起作用吗?我会收到 deadLetterchannel 的重试逻辑调用吗?

标签: apache-camel activemq ibm-mq spring-jms


【解决方案1】:

您应该确保您没有将请求-回复指定为exchange pattern。

我会明确声明该消息应该是“InOnly”。

 <inOnly uri="ACTIVEMQ..."/>
 <inOnly uri="IBM MQ..."/>

如果您打算进行请求/回复,那么您需要确保您的 WebSphere MQ 用户有权访问 SYSTEM.DEFAULT.MODEL.QUEUE。

这样的事情应该允许权限:

setmqaut -m QMGR -t q -n SYSTEM.DEFAULT.MODEL.QUEUE -g mygroup +dsp +inq +get

【讨论】:

  • 感谢您的宝贵回复。为什么 inout 模式试图读取默认队列(SYSTEM.DEFAULT.MODEL.QUEUE)。另一个队列 不会发生这种情况。如果我给出 inOnly ,如果队列关闭,我会收到 deadLetterchannel 调用以进行重试逻辑。请回答我的问题
  • 好吧,如果骆驼决定它应该通过 JMS 进行请求/回复,它将尝试为响应创建一个临时队列。在 IBM WebSphere MQ 中,默认情况下 - 您需要访问模型队列以创建临时回复队列。在复杂的路由上,将交换模式显式声明为 inOnly 通常是明智的。
  • 对于请求/回复,您可以使用命名队列,例如replyQueue=foo 以使用名为foo 的队列。在 Camel JMS 文档页面上阅读所有相关信息。
猜你喜欢
  • 2011-01-20
  • 1970-01-01
  • 1970-01-01
  • 2018-01-19
  • 1970-01-01
  • 2010-12-04
  • 2016-05-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多