一.什么是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、消息序号不一致问题发生后怎么处理?
相关推荐
在IBM WebSphere MQ中,消息持久性的属性通常由消息头MQMD(MQ Message Descriptor)中的DefPersistence域来定义,它主要有三种取值,但实际上只有两种有效值,即持久(MQPER_PERSISTENT)和非持久(MQPER_NOT_...
在本文中,我们将深入探讨如何使用C#编程语言与IBM WebSphere MQ进行交互,实现消息的发送和接收。IBM WebSphere MQ(前身为MQSeries)是一种企业级的消息中间件,它提供了一种可靠且可扩展的方式,使得应用程序可以...
【IBM WebSphere MQ安装包详解】 IBM WebSphere MQ,前身为IBM MQSeries,是IBM公司推出的一款企业级的消息中间件产品。它在信息技术领域扮演着至关重要的角色,为跨网络、操作系统和应用程序提供了高效、安全的...
IBM WebSphere MQ 是一种基于消息队列的中间件,用于实现不同的应用程序之间的异步通信。下面是对 IBM WebSphere MQ 的入门教程的总结,涵盖了 WebSphere MQ 的原理、体系结构、重要特点和应用场景等方面的知识点。 ...
3. **编写发送程序**:使用WebSphere MQ的Java Message Service (JMS) API或者WebSphere MQ的API来编写发送消息的应用。这可能包括创建`QueueConnectionFactory`,创建`QueueSender`对象,以及调用`send`方法发送...
* 架构说明:WebSphere MQ 的架构基于消息队列,能够实现高效、可靠和灵活的消息传递。 产品功能特性 WebSphere MQ 的产品功能特性包括: * 增强了订阅/发布的易用性:WebSphere MQ 支持订阅/发布式的消息传递,...
MQ(Message Queuing)是一种中间件技术,它允许应用程序通过消息传递进行异步通信。这种技术的核心理念是通过消息队列来解耦发送方和接收方,使得它们可以在不同的时间运行,甚至在不同的网络环境下工作。MQ的主要...
本文将说明如何使用 WebSphere MQ Java API 创建两个示例 Java 应用程序:MQSend(用于向队列发送消息)和 MQGet(用于从队列接收消息)。 示例应用程序 MQSend 应用程序用于向队列发送消息。该应用程序使用 ...
通过为重要的消息和事务提供可靠的、一次且仅一次的传递,Websphere MQ 可以处理复杂的通信协议,并动态地将消息传递工作负载分配给可用的资源。 IBM 消息中间件MQ以其独特的安全机制、简便快速的编程风格、卓越不凡...
IBM WebSphere MQ(原名MQSeries)是IBM提供的一款企业级的消息中间件产品,它允许不同应用程序、系统和网络在分布式环境中交换消息。本教程将帮助初学者了解WebSphere MQ的基本概念、安装配置以及常见操作,旨在...
IBM Websphere MQ是IBM公司开发的一款消息队列中间件,旨在提供一个可靠的异步通信机制,实现不同应用程序之间的数据交换和集成。下面是该教程的知识点总结: 中间件的概念和优点 中间件是一种特殊的软件系统,它...
本文将深入探讨一个基于WebSphere MQ的简单Java Message Service (JMS) 实例,帮助你理解如何在实际项目中实现消息的发送。 首先,我们需要了解JMS。JMS是Java平台上的一个标准接口,它定义了用于在分布式环境中...
WebSphere MQ 8.0 自带的 JAR 包是一组关键组件,它们构成了 IBM 的消息中间件解决方案,用于在不同应用程序之间可靠地传递数据。这些 JAR 文件位于 `WebSphere MQ\java\lib` 目录下,是开发、配置和运行与 ...
此指南覆盖了WebSphere MQ的基础知识、配置、操作与维护,以及高级主题,如故障排除和性能优化,确保读者能够有效地管理和利用WebSphere MQ作为消息传递中间件。 ### WebSphere MQ 系统管理指南 6.0 #### ...
IBM WebSphere MQ是一个先进的消息中间件产品,它提供了一个可靠的消息传输系统,用于应用程序、Web服务和Web 2.0技术。它为不同计算平台和操作系统间的消息通信提供了一个统一的解决方案。WebSphere MQ的v7版本特别...
**WebSphere MQ 7.0 .NET API**是IBM为.NET平台开发的一套高级消息队列接口,旨在简化.NET应用程序与WebSphere MQ(一种高性能的消息中间件)之间的集成。此API提供了一系列丰富的类库,使.NET开发者能够利用...
1. **WebSphere MQ架构**:WebSphere MQ采用客户端-服务器模型,由Queue Manager(队列管理器)、Queues(队列)、Channels(通道)和Message(消息)等核心组件构成。Queue Manager负责管理消息的存储和转发,...
Websphere MQ 是一款强大的中间件,用于在企业系统中实现可靠、高效的消息传递。它提供了统一的接口,使得不同的应用程序和服务能够通过消息队列进行通信,而不必直接依赖于对方的时间限制或运行状态。本教程将深入...
《精通WebSphere MQ》一书深入探讨了IBM WebSphere MQ这一强大的消息中间件技术,旨在为读者提供全面、深入的理解和实践经验。以下是基于该书标题、描述、标签以及部分内容提炼的关键知识点: ### 1. 消息中间件...