2011-03-09 111 views
4

當消息無法發佈到具有MQRC的WebSphere MQ隊列2056 MQRC_Q_SPACE_NOT_AVAILABLE時,它將轉到死信隊列。這意味着我們爲隊列使用分配的原始磁盤空間爲100%。說文件系統/ var/mqm有足夠的空閒隊列存儲空間。即使我們有我們的死信隊列存儲也在同一個/ var/mqm。如果我們已經獲得了MQRC 2056 - MQRC_Q_SPACE_NOT_AVAILABLE,那麼當一個消息的磁盤空間已滿時,它是如何發送到死信隊列的呢?MQRC 2056 - MQRC_Q_SPACE_NOT_AVAILABLE

回答

1

在您的情況下,MQRC_Q_SPACE_NOT_AVAILABLE確實反映了磁盤分區中的總空間量,但是在所有情況下都不是這樣。例如,對於較舊的文件系統,最大可能的文件大小爲2GB,即使該分區最多可容納大約1TB。因此,如果單個隊列文件達到2GB,則QMgr可能仍有足夠的空間用於向DLQ請求消息。儘管較新的文件系統已經消除了2GB文件限制,但WebSphere MQ仍然支持許多文件系統,每個文件限制2GB。在平臺上,這種限制是不存在的(或者在整個分區耗盡空間的情況下,不管平臺如何),這種行爲沒有任何危害。在那些可能成功的平臺上,你觀察到的行爲是合適的,甚至是可取的。

因此,單個隊列文件耗盡空間與耗盡分區中的所有文件空間是有區別的。 WebSphere MQ可以查詢文件系統的各個方面來詳細確定哪種情況會導致錯誤,但這會增加代碼的複雜性。當操作系統返回一個空間不足的錯誤時,簡單而快速的是嘗試一個請求。如果分區有可用空間,那麼requeue將起作用。如果沒有,那麼應用程序不會比在嘗試嘗試之前更糟糕。