Ibm mq 事件ibm消息传递队列超时所需的异常类

Ibm mq 事件ibm消息传递队列超时所需的异常类,ibm-mq,Ibm Mq,我是消息队列实现的新手 我已经在我的应用程序中实现了IBM消息队列(MQ) 问题陈述: 当此MQ无法处理特定数量的消息时,MQ会引发超时异常 由于我的系统的技术限制,我无法捕捉到确切的异常类 这意味着我只需声明catch(异常e)…但我想知道应该使用哪个异常类来处理超时错误。我认为您需要一些MQ培训,或者需要对MQ进行大量阅读 MQPUT上不存在超时。我想说,您有一些写得很糟糕的代码,并且您将MQ与写得很糟糕的代码混淆了。您是否记录了所有的交互 如果您的代码是Java/JMS,那么您应该有以下异

我是消息队列实现的新手

我已经在我的应用程序中实现了IBM消息队列(MQ)

问题陈述:

当此MQ无法处理特定数量的消息时,MQ会引发超时异常

由于我的系统的技术限制,我无法捕捉到确切的异常类


这意味着我只需声明catch(异常e)…但我想知道应该使用哪个异常类来处理超时错误。

我认为您需要一些MQ培训,或者需要对MQ进行大量阅读

MQPUT上不存在超时。我想说,您有一些写得很糟糕的代码,并且您将MQ与写得很糟糕的代码混淆了。您是否记录了所有的交互

如果您的代码是Java/JMS,那么您应该有以下异常:

catch (JMSException e)
{
   System.err.println(e.getLocalizedMessage());
   if (e != null)
      System.err.println("getLinkedException()=" + e.getLinkedException());
}
catch (MQException e)
{
   System.err.println(e.getLocalizedMessage());
   System.err.println("CC = " + e.completionCode + " : RC = " + e.reasonCode + " [" + MQConstants.lookup(e.reasonCode, "MQRC_.*") +"]");
}
如果您的代码是纯Java,那么您应该有以下异常:

catch (JMSException e)
{
   System.err.println(e.getLocalizedMessage());
   if (e != null)
      System.err.println("getLinkedException()=" + e.getLinkedException());
}
catch (MQException e)
{
   System.err.println(e.getLocalizedMessage());
   System.err.println("CC = " + e.completionCode + " : RC = " + e.reasonCode + " [" + MQConstants.lookup(e.reasonCode, "MQRC_.*") +"]");
}

您正在使用哪个版本的MQ客户端?这是Java还是JMS?您能提供一些源代码来显示错误发生的位置吗?当您说“MQ无法处理一定数量的消息”并引发超时异常时,您的意思是特定队列已满吗?通常,这会引发队列已满错误(MQRC_Q_full 2053),而不是超时。发布示例代码并指出您认为有问题的代码行。我问了很多问题,不幸的是,您回答了最没有帮助的问题。当您可以对其余部分做出响应时,让我知道。@rockdev在程序中的什么地方失败了?然后使用Roger建议的“Java/JMS”代码捕获适当的异常。您仍然没有回答jar文件来自哪个版本的问题。您可以在unix或windows上使用命令
unzip-pcom.ibm.mq.jar META-INF/MANIFEST.MF|grep实现版本
,将
.jar
重命名为
.zip
,并将其作为压缩文件夹查看,以查看上述相同的文件和信息。@rockgdev我复制并粘贴了两段代码,用“if(e!=null)”来包装整个过程。找出mqjar版本的简单方法是只运行JAR。i、 e.
java-jar com.ibm.mq.jar
java-jar com.ibm.mq.allclient.jar