根據 X/Open 分散式作業事件模型,分散式作業事件的支援仰賴於分散式作業事件管理程式,此管理程式會追蹤並管理一或多個資源管理程式所執行的作業。在 Message Queue 4.2 中,Message Queue C-API 現在支援 XA 介面 (介於分散式作業事件管理程式與 Message Queue 之間,作為 XA 相容資源管理員),可讓在分散式作業事件處理環境 (如 BEA Tuxedo) 中執行的 Message Queue C-API 用戶端,參與分散式作業事件。
此分散式作業事件支援包含實作 XA 介面規格時所使用的下列 C-API 新功能 (以及新參數與錯誤碼):
MQGetXAConnection() MQCreateXASession()
若 C 用戶端應用程式將用於分散式作業事件環境中,則必須透過使用 MQGetXAConnection() 取得連線,並透過使用 MQCreateXASession() 建立產生與使用訊息的階段作業。管理所有分散式作業事件的啟動、確認與回復時,均透過分散式作業事件管理程式提供的 API。
X/Open XA 介面規格需要下列有關 Message Queue XA 相容資源管理員的公共資訊:
xa_switch_t 結構的名稱:sun_my_xa_switch
資源管理員的名稱:SUN_RM
要連結的 MQ C-API 程式庫:mqcrt
xa_close 字串與格式:無
xa_open 字串與格式:「;」分隔的「名稱=值」對
支援下列「名稱/值」對:
表 1–6 Message Queue 資源管理員「名稱/值」對
名稱 |
值 |
說明 |
預設值 |
---|---|---|---|
address |
host:port |
代理程式之連接埠對映器服務的 host:port。 |
localhost:7676 |
username |
string |
連線至代理程式所使用的使用者名稱 |
guest |
password |
string |
使用者名稱的密碼 |
guest |
conntype |
TCP 或 SSL |
代理程式連線的協定類型 |
TCP |
trustedhost |
true/false |
是否信任代理程式主機 (僅適用於 conntype=SSL) |
true |
certdbpath |
string |
包含 NSS 憑證與金鑰資料庫檔案之目錄的完整路徑 |
未設定 |
clientid |
string |
僅 JMS 長期訂閱才需要 |
未設定 |
reconnects |
integer |
對代理程式的重新連線嘗試次數 (0 表示不重新連線) |
0 |
若要設計使用分散式作業事件的應用程式,可以建立在作業事件管理程式環境中執行的伺服器端服務,以及呼叫作業事件管理程式 API 的用戶端程式碼。Message Queue 4.2 根據 Tuxedo 作業事件管理程式提供程式設計範例。這些範例在每個平台上皆位於 ./C/tuxedo 目錄的程式範例目錄中。
此目錄包含 README 檔案,說明如何設定 Tuxedo 以使用 Message Queue 資源管理員,以及如何在 Tuxedo 環境中建立下列程式範例:
程式範例 |
說明 |
---|---|
jmsserver.c |
使用 Message Queue 實作傳送與接收訊息的 Tuxedo 服務。 |
jmsclient_sender.c |
在 jmsserver.c 程式中使用訊息產生服務的 Tuxedo 用戶端。 |
jmsclient_receiver.c |
在 jmsserver.c 程式中使用訊息接收服務的 Tuxedo 用戶端。 |
async_jmsserver.c |
使用 Message Queue 實作非同步使用訊息的 Tuxedo 服務。 |
jmsclient_async_receiver.c |
在 async_jmsserver.c 程式中使用非同步訊息使用服務的 Tuxedo 用戶端。 |