我使用MQ库(No v7 )编写了一个简单的客户端。我尝试使用以下模式将消息放入队列中:
Put a message
Wait for x minutes
Put a message again它可以工作,但如果空闲时间太长(在5-7分钟之间),我会得到以下错误:
MQJE001: An MQException occurred: Completion Code 2, Reason 2195
MQJE007: IO error reading message data
Error occured during API call - reason code0
MQJE001: Completion Code 2, Reason 2009
MQJE001: An MQException occurred: Completion Code 2, Reason 2009
MQJE003: IO error transmitting message buffer
MQJE001: Completion Code 2, Reason 2009
MQJE001: An MQException occurred: Completion Code 2, Reason 2009
MQJE003: IO error transmitting message buffer
MQJE001: Completion Code 2, Reason 2009
MQJE001: An MQException occurred: Completion Code 2, Reason 2009
MQJE003: IO error transmitting message buffer
MQJE001: Completion Code 2, Reason 2009
MQJE001: An MQException occurred: Completion Code 2, Reason 2009
MQJE003: IO error transmitting message buffer
MQJE001: An MQException occurred: Completion Code 2, Reason 2009
MQJE003: IO error transmitting message buffer
MQJE001: Completion Code 2, Reason 2009
An MQSeries error occurred : Completion code 2 Reason code 2009
com.ibm.mq.MQException: MQJE001: Completion Code 2, Reason 2009
at com.ibm.mq.MQQueue.put(MQQueue.java:1511)在阅读了关于这个主题的几个线程之后,这个错误通常是创建FDC转储,但我在系统和队列管理器日志中没有任何内容。通道是SVRCONN通道。
发布于 2012-10-24 19:59:26
好的,这里有一些有趣的可能性,但没有足够的描述来缩小范围,所以我将采用散弹枪方法,您可以从那里开始。
等待时间过长的错误通常意味着套接字已超时或已被防火墙或网络策略切断。
在本例中,是客户端获得了2195,所以我希望在客户端显示错误。如果2195发生在客户端,并且在套接字消失之后,QMgr不会剪切FDC文件,因为在这一点上它无法知道错误。客户端诊断可以更清楚地了解正在发生的事情。
在QMgr方面,2009通常会导致一条消息,表明通道已断开连接,但没有FDC。但是,在大多数系统上默认间隔为2小时之前,QMgr可能不知道通道已断开,直到TCP超时套接字。因此,在连接断开后的两个小时内,可能不会写入日志中的错误。
DIS CHS(svrconn name)时,是否有活动程序未考虑的条目?如果您不知道,可以将失败的程序移到一个专用的SVRCONN channel.如前所述,您使用的版本在调优和诊断方面有很大的不同。如果这是新的开发,我建议的第一件事就是确保你使用的是V7.5 client。它可以与任何QMgr一起工作,但调优和诊断比早期版本更好。如果QMgr的版本不支持会话共享或预读,那么您将无法获得这些功能,但您确实可以从所有纯粹的客户端改进中获益。
https://stackoverflow.com/questions/13047848
复制相似问题