明信片 - 如何運作

跳至主要內容

啟動

啟動「明信片」時,它會檢查這部電腦上有哪些佇列管理程式, 然後據以起始設定簽入對話框(如果完全沒有佇列管理程式存在,它會提示您安裝預設配置)。

明信片會利用 JMS 呼叫 queueConnectionFactory.createQueueConnection(), 來連接預設佇列管理程式。

接收訊息

當「明信片」功能在執行中時,它會輪詢稱為 postcard 的佇列, 以接收其他「明信片」傳來的訊息。(如果沒有稱為 postcard 的佇列存在,「明信片」會嘗試建立該佇列)。

當「明信片」開始執行時,它會為本端的 postcard 佇列建立一個 JMS QueueReceiver 物件,且會提供一個選取元字串作為參數,以交互識別碼CorrelId 欄位)來過濾要從佇列接收的訊息。 這個選取元字串會規定明信片從屬站只應接收其 CorrelId 欄位與使用者暱名相符的訊息。 之後,訊息資料文字就會出現在「JMS 明信片」視窗中。

傳送訊息

如果您沒有於在:欄位輸入電腦名稱,「明信片」會假設收件者是位在相同的佇列管理程式中。

如果您有輸入電腦名稱,明信片會檢查這個名稱有沒有佇列管理程式存在 - 它首先會使用所提供的完全相同的名稱,之後,會使用和預設配置 建立的相同格式的字首。

不論是哪一種情況,它都會發出 session.createQueue("postcard") 指令,並將基本佇列管理程式名稱設為所提供的字串。

最後,它會以暱名和使用者輸入的字詞來建立一個 JMS BytesMessage,並執行 queueSender.send(theMessage),將訊息放入佇列中。

明信片如何到達目的地

當這部電腦中的其他「明信片」實例使用同一個佇列管理程式和佇列時,只需要在同一個佇列中放置和取得訊息即可。 不過,如此可以確定這部電腦上安裝的 WebSphere MQ 程式碼的配置和運作完全正確。

為了讓「明信片」能傳給另一個佇列管理程式,兩個佇列管理程式之間必須有連線存在。 這個連線的存在方式有兩種,一是這兩個佇列管理程式是屬於同一個叢集的成員, 或您明確建立了兩者之間的連線。 因此,「明信片」可以假設佇列管理程式是可以連接的,並如上所述來連接它, 開啟佇列和放置訊息,將取得訊息的工作交由 WebSphere MQ 叢集程式負責。 換句話說,「明信片」只使用一個程式碼來放置訊息,它並不需要知道訊息是否要傳到另一部電腦。

在「明信片」中,當呼叫 session.createSender("postcard") 時, 叢集程式會檢查儲存庫以尋找其他佇列管理程式,並檢查佇列是否存在,如果因故無法執行這個動作,它會擲出異常狀況。

當呼叫 queueSender.send(theMessage) 時,叢集程式會開啟一個通道來通往其他佇列管理程式 (必要時,會建立該佇列管理程式),然後再傳送訊息。

之後,如果叢集最佳化程式不再需要該通道,就會捨棄該通道。 如果佇列管理程式是在不同的電腦上,這些全部會由叢集程式處理。

處置無法遞送的訊息

如果您傳了一封「明信片」給 "John",但從未使用暱名 "John" 執行「明信片」,該則訊息便會永遠停留在佇列當中。為了避免發生這種狀況,「明信片」會在訊息描述子 (MQMD) 中,將訊息期限期限 )欄位設成 48 小時。 超過該時間之後,不論訊息是位在哪裡,都會被捨棄(即使仍在傳輸當中也一樣)。


商標

請將您對說明及書籍的寶貴意見傳送至 idrcf@hursley.ibm.com

(C) IBM Corporation 1996, 2002. All Rights Reserved