首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在长时间空闲时间后放置消息不起作用

在长时间空闲时间后放置消息不起作用
EN

Stack Overflow用户
提问于 2012-10-24 18:59:29
回答 1查看 3.8K关注 0票数 2

我使用MQ库(No v7 )编写了一个简单的客户端。我尝试使用以下模式将消息放入队列中:

代码语言:javascript
复制
Put a message
Wait for x minutes
Put a message again

它可以工作,但如果空闲时间太长(在5-7分钟之间),我会得到以下错误:

代码语言:javascript
复制
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通道。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-24 19:59:26

好的,这里有一些有趣的可能性,但没有足够的描述来缩小范围,所以我将采用散弹枪方法,您可以从那里开始。

等待时间过长的错误通常意味着套接字已超时或已被防火墙或网络策略切断。

  • 应用程序是否指定在等待时静默失败?
  • 哪个版本的客户端和QMgr?一般来说,较新版本的客户端更好,即使使用较旧的QMgrs也是如此。最好的情况是最近的客户端和最近的QMgr,在这种情况下,WMQ原生协议心跳比TCP心跳更可靠。您提到的V7可以是V7.0.0、V7.0.1、V7.1或V7.5。

在本例中,是客户端获得了2195,所以我希望在客户端显示错误。如果2195发生在客户端,并且在套接字消失之后,QMgr不会剪切FDC文件,因为在这一点上它无法知道错误。客户端诊断可以更清楚地了解正在发生的事情。

  • 你是从IBM的媒体抓取jar文件还是安装客户端?如果您有完整的客户端,则有许多用于跟踪和本地诊断的选项。否则,您只能使用Java跟踪工具。
  • 客户端上的本地错误日志文件或FDC显示什么?

在QMgr方面,2009通常会导致一条消息,表明通道已断开连接,但没有FDC。但是,在大多数系统上默认间隔为2小时之前,QMgr可能不知道通道已断开,直到TCP超时套接字。因此,在连接断开后的两个小时内,可能不会写入日志中的错误。

  • 可以将频道调整为比2小时更快的响应速度。确切的调优取决于正在使用的QMgr和客户端版本,正如所讨论的那样,发生这种情况时,是否有任何孤立的通道实例仍在运行?当您执行DIS CHS(svrconn name)时,是否有活动程序未考虑的条目?如果您不知道,可以将失败的程序移到一个专用的SVRCONN channel.
  • What是主机服务器的系统范围TCP超时设置为?

如前所述,您使用的版本在调优和诊断方面有很大的不同。如果这是新的开发,我建议的第一件事就是确保你使用的是V7.5 client。它可以与任何QMgr一起工作,但调优和诊断比早期版本更好。如果QMgr的版本不支持会话共享或预读,那么您将无法获得这些功能,但您确实可以从所有纯粹的客户端改进中获益。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13047848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档