MQ应用程序异常处理规范.docxVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MQ应用程序异常处理规范

MQ应用程序异常处理规范引言MQ应用系统在日常运作过程中碰到各种MQ的异常状况,或者是在MQI调用过程中发生的错误,或者是消息在向其最终的目的地传输的过程中发生的异常状况。异常可能会由网络原因引起、由MQ服务器引起或者因为MQ的配置以及应用逻辑造成。MQ应用程序大多数的错误是不可恢复的,即必须要通过人工的介入才能解决。对于MQI立刻返回的错误我们称为本地探知的错误类型;对于队列管理器在将消息传送到远程的队列的过程中发生的一些错误状态,发起的MQI调用无法得知,在这种情况下,队列管理器通过向发起的应用程序发送一些其他的报告信息来通知异常,这种类型叫做远程探知的错误类型。本地探知的错误对于本地探知的错误,一般来说分为如下三种:MQI的失败,例如队列已满MQ系统的某个组件停止工作,例如队列管理器服务停止含有应用数据的消息处理失败MQI的失败MQI的失败会通过预先定义的返回码来标识,返回码分为Completion Code(CC)和Reason Code(RC)两部分。无论一次调用成功与否,队列管理器会返回一个Completion Code来标识这次调用的结果是成功、部分完成还是失败的状态(MQCC_OK, MQCC_WARNING, MQCC_ERROR)。同时Reason Code会标识出如果部分完成或者失败的原因。对于部分完成的状态,应用程序要根据具体的RC代码来判断对于结果是否可以接受(例如MQGET的返回MQRC_NOT_CONVERTED表明取了的消息但是无法正确转码)。CC和RC的代码描述在每一个MQI的API说明中都有详细的列表,建议应用程序对所有可能的CC和RC都进行处理。对于所有的错误类型,大致可以分为两类:可恢复的错误以及不可恢复的错误。可恢复的错误是指应用程序自己能够处理和解决的问题,例如连接失败(应用程序需要按照一定规则重新连接)、UOW错误(应用程序需要重新启动一个UOW)以及暂时的错误(应用程序在稍后进行重试)等。不可恢复的错误是指在进行人工介入之前不可能由应用程序恢复的错误,包括应用错误(例如使用了不正确的MQAPI参数)、系统错误(例如硬件问题、磁盘满或者队列损坏等MQRC_RESOURCE_PROBLEM问题)以及软件问题(队列服务器宕机,由于其他应用停止工作导致队列满等)一般的建议是应用程序进行可恢复的错误的处理,而将无法恢复的错误信息通过监控系统通知到管理员。有一些异常信息可能表示更严重的问题,而这些是无法由应用程序进行处理和解决的。必须铭记在心的是有一些MQ错误信息只是表象,可能会有多种可能的原因造成,因此并不存在一个Reason Code和造成问题的实际原因的一一对应的关系。下面列举了最常见的一些错误和处理思路:MQRC_CONNECTION_BROKENMQRC_CONNECTION_QUIESCINGMQRC_Q_MGR_STOPPINGMQRC_UNEXPECTED_ERROR链接中断,当前链接失效。应用系统需要重新建立连接并且尝试重新开始交易。应用程序应当重试的次数和间隔,如果多次尝试失败,表明这个错误是不可恢复的,通知管理员,同时释放其他相关的资源。MQRC_BACKED_OUTMQRC_SYNCPOINT_LIMIT_REACHED当前UOW已经被回滚,所有做的资源变更已经恢复或者应用程序应当检查UOW中的操作的结果并且重新开始当前的UOW,或者Recovery Log用尽。发生MQRC_SYNCPOINT_LIMIT_REACHED错误表明代码中有过多循环或者单个UOW过于复杂超过了队列管理器设置的最大未提交数,需要人工介入,一般建议队列管理器的MAXUMSGS小于100并且每个UOW都相对简单来保证性能和防止意外的循环。MQRC_Q_SPACE_NOT_AVAILABLEMQRC_RESOURCE_PROBLEM根据具体情况,这些错误可能是暂时性错误对于暂时性错误可以采取重试的策略,但是要控制重试的间隔和次数。并且在每一次重试之间增大间隔时间从而防止增大系统的负荷,尤其对于系统繁忙引起的暂时错误,需要尽可能降低吞吐从而减少恢复的时间,并且在业务超时后停止重试,报告错误。MQRC_OBJECT_CHANGEDMQRC_OBJECT_IN_USE关闭并且重新打开对象,如果经常出现则需要人工介入分析原因。MQRC_NO_MSG_AVAILABLE对于MQRC_NO_MSG_AVAILABLE如果应用认为是正常现象,则不需特殊处理。也有可能是因为消息过期、尚未Commit、在传输队列等待传输、被别的应用Browse-with-Lock,或者正在被别人GET这几种情况。MQRC_GET_INHIBITEDMQRC_PUT_INHIBITEDMQRC_Q_FULL根据实际情况和原因进行恢

文档评论(0)

shenlan118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档