ibm-mq – MQRC 2056 – MQRC_Q_SPACE_NOT_AVAILABLE

当消息无法使用MQRC 2056 MQRC_Q_SPACE_NOT_AVAILABLE发布到WebSphere MQ队列时,它将转到死信队列.这意味着我们为队列使用分配的原始磁盘空间为100%.假设文件系统/ var / mqm有足够的空闲队列存储空间.即使我们的死信队列存储也在同一个/ var / mqm中.如果我们已经获得MQRC 2056 – MQRC_Q_SPACE_NOT_AVAILABLE,那么当磁盘空间已满时,消息将如何进入死信队列?
最佳答案
在您的情况下,MQRC_Q_SPACE_NOT_AVAILABLE确实反映了磁盘分区中的总空间量,但在所有情况下都不是这样.例如,对于较旧的文件系统,尽可能最大的文件大小为2GB,即使分区最多可容纳1TB.因此,如果单个队列文件达到2GB,则QMgr可能仍然在可用于将消息重新排列到DLQ的分区中具有足够的空间.虽然较新的文件系统已经消除了2GB文件限制,但WebSphere MQ仍然支持许多文件系统,这些文件系统具有每个文件2GB的限制.在平台上没有这种限制(或者在任何情况下,当整个分区用完空间时,无论平台如何),行为都没有坏处.在重新排队可能成功的那些平台上,您观察到的行为是恰当的,甚至是可取的.

因此,单个队列文件的耗尽空间与耗尽分区中的所有文件空间之间存在差异. WebSphere MQ可以查询文件系统的各个方面,以详细确定导致错误的情况,但这会增加代码的复杂性.简单快速的是在操作系统返回空间不足错误时尝试重新排队.如果分区有可用空间,则重新排队有效.如果没有,那么应用程序不会比重新排队尝试之前更糟糕.

转载注明原文:ibm-mq – MQRC 2056 – MQRC_Q_SPACE_NOT_AVAILABLE - 代码日志