MQRC 2056 - MQRC_Q_SPACE_NOT_AVAILABLE
When a message fails to post to a 开发者_JS百科WebSphere MQ queue with MQRC 2056 MQRC_Q_SPACE_NOT_AVAILABLE it goes to Dead Letter queue. It means the Original disk space we allotted for queues usage is 100%. Say file system /var/mqm has sufficient free queue storage. Even we have our dead letter queue storage also in same /var/mqm. If we already get MQRC 2056 - MQRC_Q_SPACE_NOT_AVAILABLE, then how is it possible that a message will go to the Dead Letter queue when its disk space is already full?
In your case the MQRC_Q_SPACE_NOT_AVAILABLE
does in fact reflect the total amount of space in the disk partition, however this is not true in all cases. For example, with older filesystems the largest file size possible was 2GB, even though the partition could hold up to about 1TB. So if a single queue file reaches 2GB the QMgr may still have plenty of space in the partition available to requeue a message to the DLQ. Although newer file systems have eliminated the 2GB file limit, WebSphere MQ does still support many file systems which have this 2GB-per-file restriction. On platforms were this restriction is not present (or in any case when the entire partition runs out of space, regardless of platform) the behavior does no harm. On those platforms where the requeue is likely to be successful, the behavior you have observed is appropriate and even desirable.
So there is a difference between exhausting space for a single queue file versus exhausting all the file space in the partition. WebSphere MQ could inquire on aspects of the file system to determine in detail which case caused the error but that would add complexity to the code. What is simple and fast is to attempt a requeue when the operating system returns an out-of-space error. If the partition has space available, the requeue works. If not, then the app is no worse off than it was before the requeue attempt.
精彩评论