感谢作者:

http://www.wo81.com/tec/mid/mq/2014-04-14/94.html

 MQ中间件死信队列深度不断增加问题解决案例 ❞
作者:彭新 日期:2014-04-14 分类:MQ 点击: 来源:www.wo81.com

转载声明:本站文章若无特别说明,皆为原创,转载请注明来源,谢谢 !

背景:工行某分行发现小额MQ死信队列深度已超过1W,而且还一直在增加,但报文发送、接收均正常。

问题排查过程

1、检查应用日志、mq发送日志,均未发现异常。

2、查看mq死信队列信息

bash-3.2$ ./amqsbcg DEADQ QMMBFE

AMQSBCG0 - starts here

**********************

 MQOPEN - 'DEADQ'

 MQGET of message number 1 

****Message descriptor****

  StrucId  : 'MD  '  Version : 2

  Report   : 0  MsgType : 8

  Expiry   : -1  Feedback : 0

  Encoding : 273  CodedCharSetId : 819

  Format : 'MQDEAD  '

  Priority : 0  Persistence : 0

  MsgId : X'414D5120514D4D424645202020202020505376A520000802'

  CorrelId : X'000000000000000000000000000000000000000000000000'

  BackoutCount : 0

  ReplyToQ       : '                                                '

  ReplyToQMgr    : 'QMMBFE                                          '

  ** Identity Context

  UserIdentifier : '            '

  AccountingToken : 

   X'0000000000000000000000000000000000000000000000000000000000000000'

  ApplIdentityData : '                                '

  ** Origin Context

  PutApplType    : '7'

  PutApplName    : 'QMMBFE                      '

  PutDate  : '20120914'    PutTime  : '18260760'

  ApplOriginData : '    '

  GroupId : X'000000000000000000000000000000000000000000000000'

  MsgSeqNumber   : '1'

  Offset         : '0'

  MsgFlags       : '0'

  OriginalLength : '-1'

****   Message      ****

 length - 856 bytes

00000000:  444C 4820 0000 0001 0000 0109 5359 5354 'DLH ........SYST'

00000010:  454D 2E43 4943 532E 494E 4954 4941 5449 'EM.CICS.INITIATI'

00000020:  4F4E 2E51 5545 5545 2020 2020 2020 2020 'ON.QUEUE        '

00000030:  2020 2020 2020 2020 2020 2020 514D 4D42 '            QMMB'

00000040:  4645 2020 2020 2020 2020 2020 2020 2020 'FE              '

00000050:  2020 2020 2020 2020 2020 2020 2020 2020 '                '

00000060:  2020 2020 2020 2020 2020 2020 0000 0111 '            ....'

00000070:  0000 0333 4D51 5452 4947 2020 0000 0006 '...3MQTRIG  ....'

00000080:  5255 4E4D 5154 524D 0000 0000 0000 0000 'RUNMQTRM........'

00000090:  0000 0000 0000 0000 0000 0000 3230 3132 '............2012'

000000A0:  3039 3134 3138 3236 3037 3633 544D 2020 '091418260763TM  '

000000B0:  0000 0001 3130 3238 3831 3030 3030 3139 '....102881000019'

000000C0:  5F32 2020 2020 2020 2020 2020 2020 2020 '_2              '

000000D0:  2020 2020 2020 2020 2020 2020 2020 2020 '                '

000000E0:  2020 2020 554E 4958 2E50 524F 3220 2020 '    UNIX.PRO2   '

000000F0:  2020 2020 2020 2020 2020 2020 2020 2020 '                '

00000100:  2020 2020 2020 2020 2020 2020 2020 2020 '                '

00000110:  2020 2020 2020 2020 2020 2020 2020 2020 '                '

00000120:  2020 2020 2020 2020 2020 2020 2020 2020 '                '

00000130:  2020 2020 2020 2020 2020 2020 2020 2020 '                '

00000140:  2020 2020 2020 2020 2020 2020 2020 2020 '                '

00000150:  2020 2020 0000 0006 2F62 6570 736D 6266 '    ..../bepsmbf'

00000160:  652F 6269 6E2F 6C69 622F 4D51 6372 6563 'e/bin/lib/MQcrec'

00000170:  7620 2020 2020 2020 2020 2020 2020 2020 'v               '

3、检查MQDLQ结构如下

4、查到其ReasonCode为 0000 0109

5、X'00000109' 含义为:MQFB_APPL_CANNOT_BE_STARTED

Application cannot be started.

An application processing a trigger message was unable to start the

application named in theApplIdfield of the trigger message.

6、也就是说如下程序无法启动

/bepsmbfe/bin/lib/MQcrecv

/bepsmbfe/bin/lib/MQrrecv

7、启动不了的可能原因:文件不存在、没有执行权限等。

了解到其真实原因为路径错误(正确路径为/home/bepsmbfe/bin/lib/),将其路径改正确即可解决问题。

8、解决问题的步骤

1) 停止相关应用

2) 重新定义process

#su - mqm

$runmqsc QMMBFE

DEF PROCESS(unix.pro1) APPLTYPE(UNIX) APPLICID('/home/bepsmbfe/bin/lib/MQrrecv') REPLACE

DEF PROCESS(unix.pro2) APPLTYPE(UNIX) APPLICID('/home/bepsmbfe/bin/lib/MQcrecv') REPLACE

第3步:启动相关应用

第4步:继续观察死信队列的状况,发现不再增加,问题解决。

MQ中间件死信队列深度不断增加问题解决案例的更多相关文章

  1. 【MQ中间件】RabbitMQ -- RabbitMQ死信队列及内存监控(4)

    1.RabbitMQ TTL及死信队列 1.1.TTL概述 过期时间TTL表示可以对消息设置预期的时间,在这个时间内都可以被消费者接收获取:过了之后消息将自动被删除.RabbitMQ可以对消息和队列设 ...

  2. 消息队列 ---常用的 MQ 中间件

    目前市面上比较常用的 MQ(Message Queue,消息队列)中间件有 RabbitMQ.Kafka.RocketMQ,如果是轻量级的消息队列可以使用 Redis 提供的消息队列,其中 Redis ...

  3. RabbitMQ延迟消息:死信队列 | 延迟插件 | 二合一用法+踩坑手记+最佳使用心得

    前言 前段时间写过一篇: # RabbitMQ:消息丢失 | 消息重复 | 消息积压的原因+解决方案+网上学不到的使用心得 很多人加了我好友,说很喜欢这篇文章,也问了我一些问题. 因为最近工作比较忙, ...

  4. Rabbitmq消费失败死信队列

    Rabbitmq 重消费处理 一 处理流程图: 业务交换机:正常接收发送者,发送过来的消息,交换机类型topic AE交换机: 当业务交换机无法根据指定的routingkey去路由到队列的时候,会全部 ...

  5. rabbitmq~消息失败后重试达到 TTL放到死信队列(事务型消息补偿机制)

    这是一个基于消息的分布式事务的一部分,主要通过消息来实现,生产者把消息发到队列后,由消费方去执行剩下的逻辑,而当消费方处理失败后,我们需要进行重试,即为了最现数据的最终一致性,在rabbitmq里,它 ...

  6. RabbitMQ实战-死信队列

    RabbitMQ死信队列 场景说明 代码实现 简单的Util 生产者 消费者 场景说明 场景: 当队列的消息未正常被消费时,如何解决? 消息被拒绝并且不再重新投递 消息超过有效期 队列超载 方案: 未 ...

  7. RocketMQ之八:重试队列,死信队列,消息轨迹

    问题思考 死信队列的应用场景? 死信队列中的数据是如何产生的? 如何查看死信队列中的数据? 死信队列的读写权限? 死信队列如何消费? 重试队列和死信队列的配置 消息轨迹 1.应用场景 一般应用在当正常 ...

  8. rabbitmq死信队列消息监听

    #邮件通知并发送队列消息#!/bin/bash maillog="/var/log/mq.maillog" message_file="/tmp/mq_message&q ...

  9. rabbitmq系列(四)死信队列

    一.什么是死信队列 当消息在一个队列中变成一个死信之后,它将被重新publish到另一个交换机上,这个交换机我们就叫做死信交换机,私信交换机将死信投递到一个队列上就是死信队列.具体原理如下图: 消息变 ...

随机推荐

  1. uva-10905-贪心

    题意:对于输入的数字,拼接成一个最大的数字 解法:把数字当成字符串处理,排序,输出即可 import java.io.FileInputStream; import java.io.FileNotFo ...

  2. 分享给大家一个500G.Net ftp资料库

    把自己经常用到的一个ftp资料库分析给大家,大家可以到上面下载资料学习,资料比较齐全,另外还有部分工具, ftp的地址是:ftp://202.107.251.26

  3. <基础> PHP 进阶之 函数(Function)

    引用参数 $name = "eko"; function chang_name(&$name){ $name .= '_after_change'; } chang_nam ...

  4. 机器学习实战之朴素贝叶斯进行文档分类(Python 代码版)

    贝叶斯是搞概率论的.学术圈上有个贝叶斯学派.看起来吊吊的.关于贝叶斯是个啥网上有很多资料.想必读者基本都明了.我这里只简单概括下:贝叶斯分类其实就是基于先验概率的基础上的一种分类法,核心公式就是条件概 ...

  5. wget 递归下载整个网站(网站扒皮必备)

    有时间看到别人网站的页面比较漂亮,就想给扒皮下来,学习学习.分享一个我常用网站扒皮命令wget 这个命令可以以递归的方式下载整站,并可以将下载的页面中的链接转换为本地链接. wget加上参数之后,即可 ...

  6. compute by 的使用

    GROUP BY子句有个缺点,就是返回的结果集中只有合计数据,而没有原始的详细记录.如果想在SQL SERVER中完成这项工作,可以使用COMPUTE BY子句.COMPTE生成合计作为附加的汇总列出 ...

  7. mingw 设置python 设置git环境变量

    1.python路径设置: 安装python 比如目录:C:\Python27 假如mingw安装C盘根目录下的话,进入下面目录:C:\MinGW\msys\1.0\etc 找到 fstab 文件修改 ...

  8. Mongodb集群节点故障恢复场景分析(转)

    一个适当配置的Mongodb分片集群是没有单点故障.本文描述了分片集群中存在的几种不同的潜在的节点故障场景,以及Mongodb对这些节点故障是怎么处理的.1.Mongos节点宕机一个Mongos进程应 ...

  9. 尚硅谷springboot学习1-简介

    以前看过springboot的相关知识,当时偷懒没有做笔记,现在忘得已经差不多了,现在趁着过年有时间,再学习一遍,并做下笔记以备忘. 特性 Spring Boot来简化Spring应用开发,约定大于配 ...

  10. python中函数基础

    函数 什么是函数? 函数分为内置函数和自定义函数 定义:在程序中具备某一功能的工具.在使用之前需准备该工具(函数的定义),遇到应用场景拿来就用(后引用). 为什么要用函数? 1.代码冗余 程序组织结构 ...