新增的WebSphere MQ訊息傳遞提供程式簡介

CloudSpace發表於2009-07-30

Matthew Leming, WebSphere 訊息傳遞開發, IBM
Adrian Preston, 首席開發人員, IBM
Graham Hopkins, 首席測試師, IBM

什麼是 WebSphere MQ 訊息傳遞提供程式?

使用 WebSphere MQ 訊息傳遞提供程式(以下簡稱“MQ 訊息傳遞提供程式”)的 Java EE 應用程式通過 JMS API 進行訊息傳遞(請參閱參考資料),而 WebSphere MQ 還支援廣泛選擇其他程式設計 API 和環境。這意味著 Java EE 應用程式可以使用 MQ 訊息傳遞提供程式與以下應用程式通訊:CICS 應用程式、在 z/OS® 上執行的後端應用程式和用各種語言編寫的其他現有應用程式,這裡僅提供幾個示例(圖 1)。


圖 1. 使用 WebSphere MQ 在不同的系統之間進行通訊
圖 1. 使用 WebSphere MQ 在不同的系統之間進行通訊

通過 MQ 訊息傳遞提供程式,部署使用本地或全域性事務的 Java EE 應用程式可以將 WebSphere MQ 作為事務資源。例如,可以非同步通知購買管理應用程式:來自 WebSphere MQ 的“填寫帳戶”訊息已經到達。為了響應該訊息,該應用程式可能更新庫存資料庫,如果客戶的信用不夠,則向貨品計價應用程式傳送另一條 WebSphere MQ 訊息(圖 2)。


圖 2. 使用全域性事務的示例
圖 2. 使用全域性事務的示例

當然,此示例應用程式最好能夠執行這些操作,這樣所有資源可以作為單個全域性事務進行更新。事實上,使用 MQ 訊息傳遞提供程式可以做到這一點。換句話說,您可以在單個全域性事務範圍中協調 WebSphere MQ 和其他事務資源,如 IBM DB2® 資料庫。

要結合使用 MQ 訊息傳遞程式和 Java EE 應用程式,必須定義一個或多個受管理物件。受管理物件儲存在應用伺服器的 Java Naming and Directory Interface (JNDI) 名稱空間中,用於通過 JMS API 將應用程式與在 WebSphere MQ 中定義的資源相關聯。由於 WebSphere MQ 訊息傳遞提供程式受管理物件儲存在 JNDI 中,因此可以從有權訪問 JNDI 名稱空間的任何流程訪問它們。

WebSphere Application Server V7 中的 MQ 訊息傳遞提供程式直接支援三種受管理物件。它們分別是:

  • 啟用規範
  • 連線工廠
  • 目的地。

此外,可以將訊息偵聽器埠配置為使用 MQ 訊息傳遞提供程式。在接下來的各個部分中,將詳細討論 MQ 訊息傳遞提供程式受管理物件。





回頁首


啟用規範

WebSphere Application Server V7 中的更新 MQ 訊息傳遞提供程式支援基於 J2EE™ Connector Architecture (JCA) 1.5 相容資源介面卡。JCA 1.5 規範的一部分定義獨立於供應商的方法,此方法可以將入站訊息提交到在 Java EE 相容應用伺服器(如 WebSphere Application Server)中執行的訊息驅動的 Bean (MDB)。用於配置和設定入站訊息交付的構造稱為啟用規範。因此,在 WebSphere Application Server V7 中,現在可以建立 MQ 訊息傳遞提供程式啟用規範來管理在 WebSphere Application Server 中執行的 MDB 與 WebSphere MQ 中的目的地之間的關係。

MQ 訊息傳遞提供程式啟用規範現在是將訊息從 WebSphere MQ 目的地提交到在 WebSphere Application Server 中執行的 MDB 的首選機制。啟用規範取代了現有 WebSphere Application Server 訊息偵聽器埠支援的使用,該偵聽器埠支援在 WebSphere Application Server V7 中就已經棄用。不過,仍可以使用訊息偵聽器埠通過 MQ 訊息傳遞提供程式將訊息提交到 MDB——甚至可以同時配置使用 MQ 訊息傳遞提供程式資源的訊息偵聽器埠和 MQ 訊息傳遞提供程式啟用規範。

啟用規範與訊息偵聽器埠的比較

優先使用啟用規範(而不是訊息偵聽器埠)將訊息提交到 MDB 的原因有多個方面。與訊息偵聽器埠相比,普通的啟用規範(特別是 MQ 訊息傳遞提供程式啟用規範)具有以下優點:

  • 定義的規範:啟用規範是標準規範 (JCA 1.5) 的一部分。WebSphere Application Server 中的訊息偵聽器埠支援使用在 JMS 規範中定義的應用伺服器裝置介面,但它本身不是任何規範的一部分。
  • 簡化配置:要配置訊息偵聽器埠,您需要以下三個配置物件:連線工廠、目的地和訊息偵聽器埠本身。使用啟用規範只需兩個物件:啟用規範和目的地。
  • 不侷限於伺服器範圍:可以在 WebSphere Application Server 中的任何管理範圍定義啟用規範。訊息偵聽器埠必須在伺服器範圍配置。這意味著如果一個節點由三個伺服器組成,則必須配置三個獨立的訊息偵聽器埠,而不是僅配置一個啟用規範。

執行中的啟用規範

圖 3 顯示瞭如何使用 MQ 訊息傳遞提供程式啟用規範將 WebSphere MQ 佇列管理器目的地連結到在 WebSphere Application Server 中執行的 MDB。通過 MQ 訊息傳遞提供程式啟用規範將訊息從客戶端提交到 MDB 的流程採取以下方式:

  1. 在獨立流程中執行或在應用伺服器環境中執行的訊息傳遞客戶端使用 JMS(或任何其他訊息傳遞 API,如 MQI)將訊息傳送到在 WebSphere MQ 佇列管理器中定義的 WebSphere MQ 佇列或主題。
  2. 將 WebSphere MQ 啟用規範配置為在該目的地上偵聽訊息。檢測到新訊息時,將從該目的地(可能位於 XA 事務下)將其刪除。
  3. 然後,通過 onMessage 方法將該訊息傳遞到已配置為使用 MQ 訊息傳遞提供程式啟用規範的 MDB。
  4. MDB 使用該訊息中的資訊執行相關的業務邏輯。


圖 3. 執行中的 WebSphere MQ 訊息傳遞提供程式啟用規範
圖 3. 執行中的 WebSphere MQ 訊息傳遞提供程式啟用規範

配置啟用規範

配置 MQ 訊息傳遞提供程式啟用規範非常類似於配置 MQ 訊息傳遞提供程式連線工廠。可以使用 WebSphere Application Server 管理控制檯或 wsadmin 命令列工具對它們進行配置。要使用管理控制檯建立 MQ 訊息傳遞提供程式啟用規範,請執行以下操作:

  1. 登入到管理控制檯。
  2. 導航至 Resources 部分。展開 JMS 選項卡,並單擊 Activation specifications
  3. 選擇定義 MQ 訊息傳遞提供程式啟用規範所需的範圍。
  4. 單擊 New
  5. 單擊 WebSphere MQ messaging provider 框,並單擊 OK

圖 4 對這些關鍵控制元件的位置進行了批註。


圖 4. 配置啟用規範
圖 4. 配置啟用規範

建立了基本 MQ 訊息傳遞提供程式啟用規範之後,可以使用六種不同的配置皮膚進一步對其進行配置。要進一步配置 MQ 訊息傳遞提供程式啟用規範,請執行以下操作:

  1. 登入到管理控制檯。
  2. 導航至 Resources 部分,展開 JMS 選項卡,然後單擊 Activation specifications
  3. 選擇定義相關 WebSphere MQ 訊息傳遞提供程式啟用規範的範圍。
  4. 選擇相關的 MQ 訊息傳遞提供程式啟用規範。

第一個皮膚可用於修改 MQ 訊息傳遞提供程式啟用規範的傳輸模式和目的地,以及其他常用的配置設定。此頁面的右側提供指向其他配置皮膚的連結:

  • 使用 Advanced properties 皮膚可以配置訊息壓縮、使用者設定和訊息格式設定。使用該皮膚還能夠設定 MQ 訊息傳遞提供程式啟用規範嘗試向 MDB 提交訊息的次數(如果 MDB 重複丟擲異常)。如果超過提交次數,並且正確地配置了啟用規範,則失敗的 MDB 會暫停,從而提供調查故障的機會。
  • 可以使用 Broker properties 皮膚配置用於執行釋出/訂閱訊息傳遞的設定。並非所有屬性都適合於所有版本的佇列管理器。在 WebSphere MQ 資訊中心指定了有關哪些屬性適用於特定版本的佇列管理器的更多資訊。
  • 可以使用 Custom properties 皮膚以名稱-值對的形式為 MQ 訊息傳遞提供程式啟用規範輸入任何常規配置設定。通常,此資訊並不是必需的。
  • 使用 Client transport properties 皮膚可以輸入關於 SSL 設定和通道出口的其他資訊。如果已建立基於客戶端通道定義表 (CCDT) 的 MQ 訊息傳遞提供程式啟用規範,則此頁面不可用。
  • 最後,可以使用 JAAS-J2C authentication data 皮膚建立身份驗證別名,以供 MQ 訊息傳遞提供程式啟用規範使用。

z/OS 上的啟用規範

在 z/OS 平臺上使用 MQ 訊息傳遞提供程式啟用規範時,可以提供若干其他功能。這些功能是為充分利用 z/OS 的唯一可伸縮性和工作負載管理功能而設計的,它包括儘可能減少佇列管理器端訊息爭用的拆分程式啟用規範實現,以及對啟用規範的 z/OS 工作負載管理的支援。

有關此功能以及如何啟用和配置該功能的詳細資訊,請參閱參考資料

將訊息偵聽器埠遷移到啟用規範

早期迭代 MQ 訊息傳遞提供程式的使用者使用了訊息偵聽器埠將訊息從 WebSphere MQ 訊息傳遞提供程式目的地提交到在 WebSphere Application Server 中執行的 MDB。遷移到 WebSphere Application Server V7 時,可以改為使用 MQ 訊息傳遞提供程式啟用規範。為使遷移到啟用規範的任務變得更容易,已經提供了若干工具。

從訊息偵聽器埠進行遷移時,第一個任務是建立新的 MQ 訊息傳遞提供程式啟用規範。可以通過從頭建立啟用規範來完成此任務,也可以使用工具基於特定訊息偵聽器埠配置的設定建立 WebSphere MQ 訊息傳遞提供程式啟用規範來完成此任務。

您可以從 wsadmin 命令列工具使用 migrateWMQMLP 命令來執行遷移。在管理命令簡介部分中可以看到此命令的示例呼叫。

此外,還可以使用 WebSphere Application Server 管理控制檯進行遷移。要對現有訊息偵聽器埠完成此任務,請執行以下操作:

  1. 登入到管理控制檯。
  2. 導航到 Servers => Server Types => WebSphere application servers(圖 5),並單擊對應的應用伺服器。在右側的 Communications 標頭下,展開 Messaging 選項卡,並單擊 Message listener service 連結。在 Additional 屬性下,單擊 Listener Ports 連結。

    圖 5. 從訊息偵聽器埠遷移
    圖 5. 從訊息偵聽器埠遷移

  3. 選擇要轉換為 MQ 訊息傳遞提供程式啟用規範的訊息偵聽器埠,並單擊 Convert to activation specification 按鈕(圖 6)。

    圖 6. 轉換為啟用規範
    圖 6. 轉換為啟用規範

  4. 如果需要,更改新 MQ 啟用規範的管理名稱和 JNDI 名稱的值。另外,請選擇應定義啟用規範的相關範圍。因為在任何範圍都可以建立啟用規範,所以您可能無需遷移所有訊息偵聽器埠配置,尤其是在叢集環境中。如果遷移多個訊息偵聽器埠配置,請注意避免 JNDI 名稱衝突。單擊 Next

    圖 7. 名稱啟用規範
    圖 7. 名稱啟用規範

  5. 請檢視摘要資訊,如果沒有錯誤,請單擊 Finish

遷移訊息偵聽器埠配置後,應配置相應的 MDB,才能使用新的 MQ 訊息傳遞提供程式啟用規範。當任何 MDB 都不再引用訊息偵聽器埠時,可以通過管理控制檯或 wsadmin 將其安全刪除。





回頁首


連線工廠的更改

WebSphere Application Server V7 中的 MQ 訊息傳遞提供程式繼續對連線工廠提供完全支援,其方式與以前版本中的方式大致相同。不過,除支援某些功能外,還新增了許多增強功能,使建立和配置連線工廠變得更加容易。本部分將概述這些增強功能。

連線工廠建立嚮導

現在,隨著連線工廠建立嚮導的引入,在 WebSphere Application Server V7 中可以更方便地管理使用管理控制檯建立 MQ 訊息傳遞提供程式連線工廠的流程。該向導通過提示您輸入最常見的配置屬性資訊來提供建立基本連線工廠配置的簡單方法。然後,可以使用增強的 MQ 訊息傳遞提供程式連線工廠皮膚定製新的連線工廠,以滿足您的特定需求。

啟動此嚮導的方法與啟動啟用規範大致相同,不同的是應選擇需要建立的連線工廠的型別。

連線工廠的新功能

在 WebSphere Application Server V7 中新增了對許多重要 MQ 訊息傳遞提供程式連線工廠配置引數的完全支援。其中最重要的支援也許是 WebSphere Application Server 中與 SSL 支援的更好整合,以及對建立基於 CCDT 的訊息傳遞提供程式連線工廠的完全支援。訊息傳遞提供程式連線工廠現在還公開支援訊息標題和有效負載壓縮

重新設計的連線工廠管理皮膚

WebSphere Application Server V7 中明顯更改了 MQ 訊息傳遞提供程式連線工廠的管理控制檯皮膚的結構和佈局。通過將許多不同皮膚上各個部分中的相關屬性組合在一起,此重構使配置 MQ 訊息傳遞提供程式連線工廠變得更加容易:

  • General properties 皮膚(圖 8)顯示了最常用的配置屬性,如管理資訊、連線配置、安全設定等,並提供指向其他皮膚的連結(已在 Additional Properties 標題下列出)。
  • Advanced properties 皮膚用於配置更加專業的選項,如訊息標頭和有效負載壓縮屬性、臨時目的地的字首和連線使用者設定。
  • 僅當建立統一連線工廠或主題連線工廠時,Broker properties 皮膚才可用,該皮膚可提供配置基於釋出/訂閱的訊息傳遞所使用的各種功能和佇列的機會。
  • 使用 Custom properties 皮膚以名稱-值對的形式建立自定義屬性。可以使用這些自定義屬性配置無法通過 WebSphere Application Server V7 管理工具提供的連線工廠設定。
  • 如果建立了基於非 CCDT 的 MQ 訊息傳遞提供程式連線工廠,則可以使用 Client transport properties 皮膚新增和配置通道出口,以及提供對更高階的 SSL 配置屬性的訪問。
  • 可以使用 Connection and session pool 皮膚更改池的預設設定,這些池用於管理從特定連線工廠建立的連線和會話物件。值得一提的是,每個 MQ 訊息傳遞提供程式連線工廠都有單一的連線池,池中的每個連線都有自已的會話池。例如,預設池大小為 10 表示每個池中最多有 10 個連線,每個連線有 10 個會話,總共有 100 個會話。
  • 可以使用 JAAS - J2C authentication data 皮膚建立身份驗證別名,以供 MQ 訊息傳遞提供程式連線工廠使用。


圖 8. 常規屬性皮膚
圖 8. 常規屬性皮膚




回頁首


更好地支援 SSL

安全套接字層 (SSL) 協議在遠端伺服器流程或端點之間提供安全通訊。SSL 安全可用於建立來自端點的入站通訊和指向端點的出站通訊。要建立安全通訊,必須為端點指定證照和 SSL 配置。

在以前的 WebSphere Application Server 版本中,指向 WebSphere MQ 的基於 SSL 的連線依賴於定義的 JVM 自定義屬性(主要用於基於客戶端容器的環境)或節點的預設 SSL 配置,來指定要使用的金鑰儲存庫和信任儲存庫,併為每個連線工廠指定 SSL 密碼套件。

WebSphere Application Server V7 在指定 SSL 配置資料方式上包含若干重要更改:

  • 不是使用 SSL 的預設節點配置,而是專門為 WebSphere MQ 客戶端連線(名為 WebSphere MQ Client)新增了新的出站端點安全配置,允許進行自定義,從節點的預設配置單獨修改 WebSphere MQ 連線的預設 SSL 配置。
  • 在定義 MQ 訊息傳遞提供程式連線工廠或啟用規範時,現在有兩種方法可以獲取 SSL 配置資料:
    • 集中管理:在 WebSphere Application Server V7 中使用連線工廠或啟用規範時,當選擇此選項時將使用該伺服器的新增 WebSphere MQ Client 端點安全配置。如果在客戶端容器中使用連線工廠,則使用該客戶端的 ssl.client.props 檔案中的設定。
    • 特定的配置:您可以使用在計算單元中定義的任何 SSL 配置。
  • 在新的 WebSphere MQ Client 端點中,可以根據目標主機和埠資訊定義動態出站端點 SSL 配置。
  • 現在將從 SSL 配置(而不是連線工廠)獲取 SSL 密碼套件。儘管仍可能覆蓋每個連線工廠上使用的 SSL 密碼套件,但此操作無需為建立的每個連線工廠手動輸入密碼套件。

有關 WebSphere MQ 訊息傳遞中 SSL 配置的詳細資訊,請參閱參考資料





回頁首


對 CCDT 的完全支援

在 WebSphere Application Server V7 中,現在有兩種方法指定 MQ 訊息傳遞提供程式連線工廠或啟用規範所需的資訊,以便它們可以連線到 WebSphere MQ 佇列管理器。第一種方法需要您手動輸入所有的資訊。第二種方法是向 MQ 訊息傳遞提供程式資源提供指向客戶端通道定義表 (CCDT) 的統一資源定位符 (URL)。

CCDT 是一種二進位制檔案,它包含有關如何建立指向一個或多個佇列管理器的客戶端連線通道的資訊。該檔案包含的資訊有目標佇列管理器的主機名、埠和名稱,以及更高階的配置資訊,如應該使用的 SSL 屬性。通過 WebSphere MQ 佇列管理器或使用 SupportPac MO72 提供的獨立工具可以生成 CCDT。

使用 CCDT 建立 MQ 訊息傳遞提供程式資源可以提供以下好處:

  • 在單一位置中包含客戶端連線通道資訊。如果任何資訊發生更改(如 WebSphere MQ 佇列管理器駐留的計算機的主機名),則只需更新 CCDT,使用 CCDT 的所有 WebSphere MQ 訊息傳遞提供程式資源將拾取該更改。
  • 由於需要的資訊較少,因此減少了配置錯誤發生的機會。使用 CCDT 輸入連線資訊時,所需的全部輸入內容是 CCDT URL 和一個可選的佇列管理器名稱。如果手動配置 MQ 訊息傳遞提供程式資源,則需要非常多的資訊——特別是配置 SSL 時。

有關使用 CCDT 配置 MQ 訊息傳遞提供程式資源的詳細資訊,請參閱參考資料





回頁首


使用 Java 編寫的通道出口

通道出口是在 WebSphere MQ 通道生命週期中的定義點執行的使用者程式碼。通道出口有許多潛在的用途,其中包括稽核、安全、壓縮、轉換等。WebSphere Application Server V7 中的 MQ 訊息傳遞提供程式提供對基於 Java 的通道出口的完全支援。

在以前的 WebSphere Application Server 版本中,必須使用自定義屬性配置通道出口。在 WebSphere Application Server V7 中,可以使用管理控制檯、管理命令在連線工廠和啟用規範上配置通道出口,或者在 CCDT 條目中指定它們。

要使用通道出口,MQ 訊息傳遞提供程式連線工廠或啟用規範必須具有傳輸型別“客戶端”或“繫結然後客戶端”。這是因為使用基於客戶端通道的連線連線到 WebSphere MQ 佇列管理器或佇列共享組時,只能使用通道出口程式。如果選擇“繫結然後客戶端”傳輸模式,則僅在繫結模式連線失敗時,才驅動通道出口。

MQ 訊息傳遞提供程式支援以下三種不同型別的通道出口:

  • 在通道啟動的過程中呼叫安全出口,顧名思義,它通常用於授權目的。不過,安全出口用於執行在通道啟動時僅需執行的任何其他程式碼。
  • 通過通道傳送傳輸之前和通過通道接收傳輸之後會立即分別呼叫傳送出口接收出口。傳送和接收出口的可能用途包括壓縮或日誌記錄。





回頁首


傳輸型別的自動選擇

企業應用程式使用 MQ 訊息傳遞提供程式連線到佇列管理器時,共有兩個主要方法來進行此連線。一種選擇是使用基於 TCP/IP 的網路連線;此方法稱為客戶端模式連線。另一種選擇是使用交叉記憶體程式間通訊,通常將此方法稱為繫結模式連線。儘管連線機制的選擇對企業應用程式是透明的,但是名為傳輸模式的此資訊將形成 MQ 訊息傳遞提供程式連線工廠和啟用規範配置的一部分。

在 MQ 佇列管理器與 WebSphere Application Server 執行於同一節點的配置中,使用繫結模式可提供效能優勢。當佇列管理器和應用伺服器由網路連線的不同計算機承載時,將需要客戶端模式連線。當使用新的“繫結然後客戶端”模式時,將首先嚐試指向佇列管理器的繫結模式連線,如果無法實現此連線,則建立客戶端模式連線。

建立或修改 WebSphere MQ 訊息傳遞提供程式啟用規範或連線工廠時,可以選擇“繫結然後客戶端”傳輸模式。





回頁首


通道壓縮

在 WebSphere Application Server V7 中啟用新的道通壓縮支援時,訊息內容通過網路傳輸時將被壓縮。此壓縮適用於跨應用伺服器中執行的企業應用程式與它們連線的佇列管理器之間的連結傳輸的資料。

如果使用通道壓縮,則從應用程式角度而言對訊息資料的操作是透明的;在 WebSphere MQ 排列訊息資料之前會自動對其解壓縮。這使得通道壓縮的使用對連線到佇列管理器的其他 WebSphere MQ 應用程式同樣透明。圖 9 顯示了壓縮和解壓縮訊息資料的關鍵點。


圖 9. 通道壓縮
圖 9. 通道壓縮

使用通道壓縮有助於提高在應用伺服器和佇列管理器之間傳輸訊息的速度。這是因為壓縮在訊息中傳送或接收的資料可以減少傳輸該訊息所需的網路頻寬。

在某些情況下,使用通道壓縮可以減少為基於 SSL 的連線加密資料花費的處理器時間。這是因為加密資料花費的時間通常取決於加密的資料量,而不是實際的資料內容。因此,如果您的資料壓縮完好,您會發現處理器壓縮資料、然後加密該資料所花費的時間明顯少於加密所有非壓縮資料所花費的時間。

WebSphere Application Server V7 支援兩種型別的壓縮:

  • 行程編碼 (RLE) 壓縮演算法需要非常少的處理器時間,適用於在連續位置重複許多相同位元組值的資料。對不具有此重複級別的資料無效。
  • ZLIB 壓縮演算法需要更多的處理器時間,但適用於更具變化性的資料。

可以通過 WebSphere Application Server 管理控制檯或 wsadmin 命令列介面啟用通道壓縮。要使用管理控制檯啟用通道壓縮(圖 10),請執行以下操作:

  1. 登入到管理控制檯。
  2. 導航至 Resources 部分,展開 JMS 選項卡,單擊 Activation specifications 或適當型別的連線工廠連結。
  3. 單擊要啟用通道壓縮的連線工廠或啟用規範,並選擇右側的 Advanced properties 連結。
  4. 在頁面的頂部將顯示 Message compression 部分。要啟用標題壓縮,請選中 Compress message headers 框,如圖中紅色箭頭所示。要壓縮訊息有效負載,請從下拉框中選擇所需的壓縮演算法,如下面的藍色箭頭所示。


圖 10. 啟用通道壓縮
圖 10. 啟用通道壓縮




回頁首


管理命令簡介

在 V7 之前的版本中,可以在 WebSphere Application Server 中通過管理控制檯或使用 wsadmin 工具直接操作 WebSphere Application Server 配置模型來配置 MQ 訊息傳遞提供程式資源。

通過 wsadmin 直接與 WebSphere Application Server 配置模型進行互操作有一定的缺陷,容易出現錯誤。WebSphere Application Server V7 中引入了一組新的管理命令,可以通過這些命令來建立、修改、刪除和顯示 MQ 訊息傳遞提供程式資源,還引入了相關功能,如將訊息偵聽器埠遷移到 MQ 訊息傳遞提供程式啟用規範。

新命令包括若干引數,可以對基礎配置文件執行適當的操作。和直接與配置模型進行互操作相比,使用這些命令的一些主要好處有:

  • 該命令可提供輸入驗證,從而有助於確保對配置模型的任何更改都正確無誤。這可以防止由於配置模型損壞而導致的啟動錯誤。
  • 這些命令會以文件的形式記錄下來,並提供命令列幫助資訊來幫助使用者。

所有的 MQ 訊息傳遞提供程式管理命令都是 WMQAdminCommands 命令組的一部分,可以使用 Jython 或 JACL 執行它們。通過將以下 Jython 命令輸入到 wsadmin 提示符可以獲取所有不同命令的摘要資訊:

wsadmin>print AdminTask.help('WMQAdminCommands')

WMQAdminCommands 命令組由六個命令集組成,以下各部分將描述這些命令集。建立 MQ 訊息傳遞提供程式資源時,一般情況下,管理名稱和 JNDI 名稱在建立它的範圍中必須是唯一的,否則會產生錯誤訊息。

啟用規範命令

為操作 WebSphere MQ 訊息傳遞提供程式啟用規範,共提供了以下五個命令:

  • createWMQActivationSpecification:在特定範圍建立新的訊息傳遞程式啟用規範。例如,以下命令程式碼可在節點範圍建立簡單的基於 CCDT 的 WebSphere MQ 訊息傳遞提供程式啟用規範:
    wsadmin>node = AdminConfig.list('Node')
    wsadmin>AdminTask.createWMQActivationSpec(node, ["-name MyActivationSpec
    -jndiName   'jms/MyActivationSpec' -destinationJndiName 'jms/MyQueue' 
    -destinationType javax.jms.Queue -ccdtUrl 'file://ccdt.tab' -ccdtQmgrName QM12"])

  • listWMQActivationSpecs:列出在特定範圍定義的、當前配置的所有 MQ 訊息傳遞提供程式啟用規範:
    wsadmin>AdminTask.listWMQActivationSpecs(node)
    'MyActivationSpec(cells/L3A3316Node04Cell/nodes/L3A3316Node05|resources
    .xml#J2CActivationSpec_1219672912125)
    MyOtherActivationSpec(cells/L3A3316Node04Cell/nodes/L3A3316Node05|resources
    .xml#J2CActivationSpec_1219673212812)'

  • showWMQActivationSpec:分別顯示每個啟用規範:
    wsadmin>AdminTask.showWMQActivationSpec('MyActivationSpec(
    cells/L3A3316Node04Cell/nodes/L3A3316Node05|resources.xml#J2CActivationSpec
    _1219672912125)')

  • modifyWMQActivationSpec:改變現有 MQ 訊息傳遞提供程式啟用規範的配置。(無法將現有的基於 CCDT 的啟用規範更改為基於非 CCDT 的啟用規範。)例如,以下命令程式碼可修改訊息傳遞提供程式啟用規範,以便在 JNDI 中引用不同的目的地:
    wsadmin>AdminTask.modifyWMQActivationSpec('MyActivationSpec(
    cells/L3A3316Node04Cell/nodes/L3A3316Node05|resources.xml#J2CActivationSpec
    _1219672912125)', ["-destinationJndiName 'jms/AnotherWMQQueue'"])

  • deleteWMQActivationSpec:刪除 MQ 訊息傳遞提供程式啟用規範。例如,以下命令程式碼可刪除以前建立的啟用規範:
    wsadmin>AdminTask.deleteWMQActivationSpec('MyActivationSpec(
    cells/L3A3316Node04Cell/nodes/L3A3316Node05|resources.xml#J2CActivationSpec
    _1219672912125)')

連線工廠命令

為操作 MQ 訊息傳遞提供程式連線工廠,還提供了另一個由五個命令組成的集合。這些命令適用於所有三種型別的連線工廠:統一、佇列和主題。

  • createWMQConnectionFactory:在特定的範圍建立 MQ 訊息傳遞提供程式連線工廠。型別引數將指定是否建立基於統一、佇列或主題的連線工廠,並分別採用值 CF、QCF 或 TCF。例如,以下命令程式碼可建立使用傳送出口、接收出口和其餘預設值配置的統一連線工廠:
    wsadmin>AdminTask.createWMQConnectionFactory(node, ["-name MyCF 
    -jndiName 'jms/MyCF' -type CF -rcvExit com.example.ReceiveExit -rcvExitInitData 
    'debug=true' -sendExit com.example.SendExit -sendExitInitData 'compression=normal'"])

  • modifyWMQConnectionFactory:修改現有 MQ 訊息傳遞提供程式連線工廠。無法使用此命令更改連線工廠的型別。例如,以下命令程式碼可從上面建立的連線工廠中刪除傳送和接收通道出口配置:
    wsadmin>AdminTask.modifyWMQConnectionFactory('MyCF(cells/
    L3A3316Node04Cell/nodes/L3A3316Node05|resources.xml#MQConnectionFactory
    _1219674863640)', ["-rcvExit '' -rcvExitInitData '' -sendExit '' 
    -sendExitInitData ''"])

  • listWMQConnectionFactoriesshowWMQConnectionFactorydeleteWMQConnectionFactory: 分別列出特定範圍的所有 MQ 訊息傳遞提供程式連線工廠、顯示單個 MQ 訊息傳遞提供程式連線工廠和刪除 MQ 訊息傳遞提供程式連線工廠。例如,以下命令程式碼可驗證 MyCF 上不再設定通道出口引數:
    wsadmin>AdminTask.showWMQConnectionFactory('MyCF(cells/
    L3A3316Node04Cell/nodes/L3A3316Node05|resources.xml#MQConnectionFactory
    _1219674863640)')

目的地命令

為建立和操作 MQ 訊息傳遞提供程式佇列和主題,共提供了兩個命令集。可以使用 createWMQTopiccreateWMQQueue 命令建立相關範圍的訊息傳遞提供程式佇列或主題。例如,以下命令程式碼可在伺服器範圍建立 MQ 訊息傳遞提供程式佇列:

wsadmin>server = AdminConfig.list('Server')
wsadmin>AdminTask.createWMQQueue(server, ["-name MyQueue -jndiName 
'jms/MyQueue' -queueName q1.in -useNativeEncoding false -integerEncoding 
Reversed -decimalEncoding Reversed -floatingPointEncoding IEEEReversed"])

類似地,以下命令程式碼可建立伺服器範圍的 WebSphere MQ 訊息傳遞提供程式主題:

wsadmin>AdminTask.createWMQTopic(server, ["-name MyTopic -jndiName 
'jms/MyTopic' -topicName sport/football -useNativeEncoding false -integerEncoding 
Reversed -decimalEncoding Reversed -floatingPointEncoding IEEEReversed"])

  • 要列出特定範圍的所有 WebSphere MQ 訊息傳遞提供程式主題或佇列,請使用 listWMQTopicslistWMQQueues 命令,並作為引數提供所需範圍的名稱。要檢視特定 MQ 訊息傳遞提程式佇列或主題的配置,請使用 showWMQTopicshowWMQQueue 命令,並傳入要顯示的物件名稱。例如,要顯示以前建立的主題,請輸入:
    wsadmin>AdminTask.showWMQTopic('MyTopic(cells/L3A3316Node04Cell/
    nodes/L3A3316Node05/servers/server1|resources.xml#MQTopic_1219676983984)')

  • 可以使用 modifyWMQQueuemodifyWMQTopic 命令修改特定 MQ 訊息傳遞提供程式主題或佇列的屬性。例如,可以使用此 modifyWMQQueue 命令將 useNativeEncoding 設定回預設值 true:
    wsadmin>AdminTask.modifyWMQQueue('MyQueue(cells/L3A3316Node04Cell/
    nodes/L3A3316Node05/servers/server1|resources.xml#MQQueue_1219676256312)', 
    ["-useNativeEncoding true"])

    然後,要驗證是否正確地進行了更改,您可以執行 showWMQQueue 命令:
    wsadmin>AdminTask.showWMQQueue('MyQueue(cells/L3A3316Node04Cell/
    nodes/L3A3316Node05/servers/server1|resources.xml#MQQueue_1219676256312)')

manageWMQ 命令

manageWMQ 命令具有三種用途:

  • 它可以通過查詢選項提供有關可用於除錯目的的 MQ 訊息傳遞提供程式例項的版本資訊。
  • 它可以使用 nativePath 選項設定本機路徑資訊,如果使用指向佇列管理器的繫結模式連線則需要該資訊。
  • 它可以在 z/OS 平臺上使用 enableInbound 選項為入站訊息交付啟用控制區域調整流程。如果使用 nativePath 或 enableInbound 選項,那麼要使更改生效,必須再迴圈相關的應用伺服器流程。

呼叫 manageWMQ 命令時,需要提供安裝的資源介面卡(伺服器、節點或計算單元範圍)的物件名稱。通過檢視相關的 J2CResourceAdapter 物件可以獲取此資訊。此示例顯示了使用萬用字元查詢這些物件的方式:

wsadmin>AdminConfig.list('J2CResourceAdapter', '*WebSphere MQ*')

下面的示例說明了如何在從上一示例返回的節點範圍獲取安裝的 MQ 訊息傳遞提供程式的版本資訊:

wsadmin>AdminTask.manageWMQ("WebSphere MQ Resource Adapter(cells/
L3A3316Node04Cell/nodes/L3A3316Node05|resources.xml#J2CResourceAdapter_
1216206449734)", ["-query"])

使用 nativePath 選項指定本機路徑資訊時,伺服器範圍的路徑資訊將覆蓋節點和計算單元範圍的路徑資訊。類似地,設定節點範圍的本機路徑資訊會覆蓋在計算單元範圍指定的配置。使用此選項時提供的路徑必須指定包含本機庫的目錄的完整路徑。例如,以下命令程式碼可在計算單元範圍指定本機路徑資訊:

wsadmin>AdminTask.manageWMQ("WebSphere MQ Resource Adapter(cells/
L3A3316Node04Cell|resources.xml#J2CResourceAdapter_1216206454984)", ["-nativePath 
'c://Program Files//IBM//WebSphere MQ//Java//lib//'"])

下面是使用 enableInbound 選項的示例。使用此選項時,傳入的 J2CResourceAdapter 物件必須在服務範圍,否則會產生錯誤:

wsadmin>AdminTask.manageWMQ("WebSphere MQ Resource Adapter(cells/
L3A3316Node04Cell/nodes/L3A3316Node05/servers/server1|resources.xml#J2CResourceAdapter
_1216206454812)", ["-enableInbound"])

migrateWMQMLP 命令

可以使用 migrateWMQMLP 命令將使用 MQ 訊息傳遞提供程式資源的訊息偵聽器埠遷移到 MQ 訊息傳遞提供程式啟用規範。例如,以下命令程式碼可查詢和選擇特定的訊息偵聽器埠,然後將其轉換為伺服器範圍的 MQ 訊息傳遞提供程式啟用規範:

wsadmin>lp1 = AdminConfig.list('ListenerPort')
wsadmin>AdminTask.migrateWMQMLP(lp1, ["-asName as1 -asJNDIName jms/as1 
-asScope server"])





回頁首


總結

本文簡要概述了在 WebSphere Application Server V7 的 WebSphere MQ 訊息傳遞提供程式中的新功能,並提供了描述如何使用這些功能的示例。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14789789/viewspace-610839/,如需轉載,請註明出處,否則將追究法律責任。

相關文章