Websphere MQ消息序号Message Sequence详解 分手后的思念是犯贱 2022-04-11 05:52 910阅读 0赞 **一.什么是MQ的消息序号?** 通道为每一条消息的传送分配了一个序列号,它会自动累计增值。 消息序列号由发送通道分配,是通道的一个永久属性,每当发送一条消息,消息序列号就加一。 通道的相关属性SEQWRAP 表示序号的最大值,缺省为999,999,999。序列号越界后自动归零,从头开始。 消息序列号是保证MQ消息传输不丢失、不复传的一个重要机制,通道利用消息序号来标识传送和确认的消息。 **二.怎么查看通道当前的消息序号?** 无论是在发送端还是接收端,在MQSC下输入如下命令,其中CURSEQNO即为当前消息序号: $ runmqsc QM dis chs(C) all AMQ8417: Display Channel Status details. CHANNEL(C) XMITQ( ) CONNAME(127.0.0.1) CURRENT CHLTYPE(RCVR) INDOUBT(NO) LSTSEQNO(0) LSTLUWID(0000000000000000) CURMSGS(0) CURSEQNO(3) CURLUWID(45BF8B5021200000) STATUS(RUNNING) LSTMSGTI(21.36.03) LSTMSGDA(2012-10-27) MSGS(3) BYTSSENT(328) BYTSRCVD(1783) BATCHES(7) BATCHSZ(50) HBINT(300) NPMSPEED(FAST) CHSTATI(21.14.41) CHSTADA(2012-10-27) BUFSSENT(8) BUFSRCVD(11) LONGRTS(999999999) SHORTRTS(10) JOBNAME(00000AD500000023) MCASTAT(RUNNING) STOPREQ(NO) **三.正常情况下的通道两端消息序号是怎样的?** 正常情况下,通道两端的消息序列号或者相等或者相差为一。 **四.什么原因会导致消息序号不一致?** 1.通信故障:双方对前面的某一条(或一批) 消息是否发送成功理解不一致。在解决了不确定(In-doubt) 的消息后,可以用 MQSC 命令通过重置消息序号将双方调整到一致。 2./var/mqm 使用旧的备份恢复 3.某一方MQ系统重新安装 4.队列管理器重建 5.某一方通道重建 6.某一方通道被重置 **五.消息序号不一致会导致什么问题发生?** 通道序号不一致会导致通道无法正常启动(即状态不是running),通道状态为retrying。 MQ日志会有错误记录,比如/var/mqm/qmgrs/队列管理器名称/errors/AMQERR01.LOG的内容: --------------------------------------------------------- AMQ9526: 通道 'SDR.TEST' 的消息序号出错 或者 Message sequence number error for channel 'SDR.TEST' 说明: 本地和远程队列管理器对下一个消息序号不一致。当希望消息序号 1 时,发送了序号为 101 的消息。 操作: 确定该不一致的原因。有可能同步信息已损坏, 或已被逆序恢复成先前的版本。如果问题不能解决, 可用 RESET CHANNEL 命令在通道的发送端人工复位此序号。 --------------------------------------------------------- **六.消息序号不一致问题发生后怎么处理?** **方法一:**在通道发送端用 MQSC 命令,重置消息序号为1,稍后通道两端消息序号会被同步为1。 示例:在发送端将消息序号重置为1(默认为1,不是0) RESET CHANNEL (C) 等于 RESET CHANNEL (C) SEQNUM(1) 注意:在连接通道的主动方重置消息序号会将双方一起调整,在被动方重置则只设置一端。因为一旦连接断开后,通道重连时双方 MCA 会将消息序号同步。 建议:在发送端和接收端同时重置消息序号,这样能快速解决序号不一致的问题。 **方法二:**在通道接收方用MQSC命令将消息序号重置为与发送端相同(“5、消息序号不一致会导致什么问题发生?” 中的日志记录了发送方通道的序号) 示例:将接收通道消息序号重置为与发送通道的101: reset channel(C) seqnum(101) **七.MQ启动后是否需要重置消息序号?** MQ的消息序号是通道的一个永久属性,正常情况下,无论是重新启动队列管理器还是重新启动计算机,通道序列号都不会因此而变化,因而不需要进行重置操作。 **八.常见问题** 问题:MQ 重置通道序列号不生效 请检查您重置的通道是发送通道还是接收通道,如果重置接收通道肯定只能重置接收通道的序号,并不能改变发送通道的序号,一样会消息序号出错,当然,也可以查找到发送通道的消息序号,然后将接收通道的消息序号重置成与发送通道相同的值。 具体请参考 - 6、消息序号不一致问题发生后怎么处理? 文章来源:[http://www.wo81.com/tec/mid/mq/2014-04-14/109.html][http_www.wo81.com_tec_mid_mq_2014-04-14_109.html] [http_www.wo81.com_tec_mid_mq_2014-04-14_109.html]: http://www.wo81.com/tec/mid/mq/2014-04-14/109.html
还没有评论,来说两句吧...