事件處理

在事件通知方面,連接器會偵測應用程式而非資料庫觸發所寫入佇列中的事件。當應用程式或其他可啟用 MQ 的軟體產生 WebSphere MQ 訊息並將它們儲存在 MQ 訊息佇列上時,便會發生事件。

擷取

連接器使用 pollForEvents() 方法來定期輪詢 MQ 佇列中的訊息。當連接器找到訊息時, 就從 MQ 佇列中擷取訊息並查驗以判斷其格式。如果在連接器 meta 物件中已定義格式,連接器會使用資料處理常式, 來產生具有動詞的適當商業物件。有關於事件失敗情況,請參閱"錯誤處理"

連接器在處理訊息時,首先會開啟對輸入佇列的交易式階段作業。若連接器順利地送出商業物件,但無法確定佇列中的交易, 則可能導致商業物件遞送兩次到協同作業,而此交易式方法可儘量避免這種情形。為避免此問題,連接器將所有訊息移至進行中佇列。訊息保留於此處,直到處理完成為止。 如果連接器在處理期間非預期地關閉,則訊息會保留在進行中佇列內,而不會復原到原始的輸入佇列中。

註:
對 JMS 服務提供者的交易式階段作業需要先執行並確定佇列上每一個所要求的動作, 才能夠從佇列中移除事件。因此,當連接器從佇列擷取訊息時,在發生下列三件事之前並不會確定擷取: 1) 訊息已轉換成商業物件;2) 商業物件已由 gotApplEvents() 方法遞送至 InterChange Server;3) 收到回覆值。

回復

在起始設定時,連接器會檢查進行中佇列是否有尚未完全處理的訊息 (假設是由於連接器關閉所造成)。連接器配置內容 InDoubtEvents 可讓您指定四種選項的其中一種來處理這些訊息的復原: 啟動時失敗、重新處理、忽略、記載錯誤。

啟動時失敗

透過啟動時失敗選項,若連接器於起始設定期間發現進行中佇列含有訊息,則記載錯誤並立即關閉。使用者或系統管理者有責任查驗訊息並採取適當的動作, 不論是完全刪除這些訊息,或移至不同的佇列。

重新處理

透過重新處理選項,如果連接器在起始設定期間發現進行中佇列含有任何訊息,則會在後續的輪詢期間優先處理這些訊息。當進行中佇列內的所有訊息皆已處理完畢時,連接器就開始處理輸入佇列中的訊息。

忽略

透過忽略選項,如果連接器在起始設定期間發現進行中佇列含有任何訊息,連接器將忽略它們,但不會關閉。

記載錯誤

透過記載錯誤選項,如果連接器在起始設定期間發現進行中佇列含有任何訊息,則會記載錯誤,但不關閉。

保存

如果已指定連接器內容 ArchiveQueue,且其識別有效的佇列,則連接器會將所有順利處理的訊息複本放入保存佇列中。如果未定義 ArchiveQueue,則訊息在處理之後就會捨棄。 如需保存未訂閱或錯誤訊息的詳細資訊, 請參閱"錯誤處理"

註:
根據 JMS 使用慣例,擷取的訊息無法立即送到另一個佇列。 為了保存和重新遞送訊息,連接器會先產生第二個訊息,這個訊息會複製原始訊息的主體和標頭 (如果有的話)。為了避免與 JMS 服務提供者發生衝突,僅重複 JMS 必要的欄位。因此,對於要保存或重新遞送的訊息,format 欄位是唯一會複製的額外訊息內容。

Copyright IBM Corp. 1997, 2003