MFT 日誌程式錯誤處理及拒絕
Managed File Transfer 日誌程式會識別兩種類型的錯誤: 個別訊息錯誤及一般錯誤。
- 訊息中遺漏作為資料必要項目的結果碼
- 傳送指定工作名稱長度為 3000 個字元,這對相關聯的資料庫直欄而言太大
- 收到傳送的進度訊息,但沒有已開始傳送的記錄(原因可能是傳送開始訊息遭誤送或延遲)
- 收到訊息,這不是 Managed File Transfer 日誌訊息
一般錯誤是指非個別訊息錯誤以外的所有錯誤。 這些錯誤可能是因配置問題錯誤所導致。
發現個別訊息錯誤時,日誌程式會透過將訊息放入拒絕佇列來拒絕訊息。 由於不會向輸出日誌中寫入任何內容,因此,請定期檢查或持續監視拒絕佇列,以偵測被拒絕的訊息。
如果連續拒絕太多訊息,沒有任何訊息成功寫入資料庫,則會將這種情況視為一般錯誤。 例如,請考量一律使用 10 個字元碼作為工作名稱的網站,但意外將工作名稱直欄重新配置為兩個字元寬度。 雖然資料太寬通常屬於個別訊息錯誤,但在此案例中是一般的配置問題,該問題被偵測為一般錯誤。 您可以使用 wmqfte.max.consecutive.reject 內容,調整導致一般錯誤所需的連續個別訊息錯誤數。
如果偵測到一般錯誤,日誌程式會回復尚未交由佇列管理程式確定的任何訊息,然後定期進行重試。 識別問題的訊息會寫入輸出日誌及主控台(如果已使用 -F 參數以前景模式啟動日誌程式)。
日誌程式的輸出日誌位置,取決於是獨立式還是 JEE 資料庫日誌程式。 如果是獨立式資料庫日誌程式,會位在目錄 MQ_DATA_PATH/mqft/logs/coordination_qmgr_name/loggers/logger_name 中。 若為 JEE 資料庫日誌程式,則位於應用程式伺服器的標準輸出日誌。
拒絕佇列
導致個別訊息錯誤的訊息會被移至拒絕佇列。 在每個被拒絕訊息上,會設定訊息內容以指示拒絕訊息的原因。 該內容的完整名稱是 usr.WMQFTE_ReasonForRejection(雖然 usr)。 在某些環境定義中省略 (包括 JMS 和 IBM® MQ Explorer)。
如果您是使用 IBM MQ Explorer,則可以用滑鼠右鍵按一下佇列並按一下 瀏覽訊息,以檢視拒絕佇列的內容。 若要查看拒絕訊息的原因,請按兩下訊息以開啟其內容對話框,然後選取「具名內容」頁面。 您將會看到名為 WMQFTE_ReasonForRejection 的內容。 或者,您可以撰寫或配置監視工具,以自動取得此資訊。
有時,您可能想要重新處理拒絕佇列中的訊息。 在此主題先前說明的範例中,在使用兩個字元工作名稱直欄的資料庫中,訊息可以在增加資料庫直欄寬度後得到成功處理。 又如另一個範例,當傳送完成訊息因其相關聯的傳送開始遺漏而遭到拒絕後,傳送開始訊息可能會在稍後送達。 之後,重新處理傳送完成訊息即會成功執行。
DISPLAY SUB(SYSTEM.FTE.DATABASELogger.AUTO) DEST在佇列之間移動訊息的一種方式是使用 MA01 SupportPac,例如:
q -IFTE.REJECT -oSYSTEM.MANAGED.DURABLE.49998CFF20006204 拒絕佇列會包含因各種原因而遭拒絕的訊息,僅部分訊息已得到解決。 在此情況下,您仍可以重新處理所有訊息;現在可以接受的訊息會得到處理,無法接受的訊息會被再次移至拒絕佇列。日誌程式不會記載傳送日誌中的 Malformed 日誌訊息。 這些訊息會被認定為不具重要性,因此會傳送至拒絕佇列。 如需傳送日誌訊息的相關資訊,請參閱 檔案傳送日誌訊息格式。