JMS Connection Factory
Connection Factory 是 JMS 用戶端 (使用 JMS API 的 JMS 程式) 用來建立與 JNDI 提供者 (傳訊提供者,例如 IBM® MQ) 的連線的物件。
您可以使用「 IBM MQ 探險家 」來建立 Connection Factory ,以及定義 Connection Factory 將用來建立連線的連線參數。
Connection Factory 如同目的地一樣,是受管理物件,並儲存在 JNDI 名稱空間中,這是命名和目錄服務內的一個已定義位置。 起始環境定義會定義 JNDI 名稱空間的根目錄。 在「 IBM MQ 探險家」中,所有 Connection Factory 都會儲存在適當環境定義和子環境定義的 Connection Factory 資料夾中,如下圖所示。
在此圖中,稱為 Connection Factory 1
的 Connection Factory 儲存在稱為 File System Initial Context
之起始環境定義的 Connection Factory 資料夾中。
當您定義 Connection Factory 時,您可以選取用來作為 JMS 提供者的傳訊提供者 (例如, IBM MQ 或「即時」); Connection Factory 只能建立與該傳訊提供者的連線。 如果要讓 JMS 用戶端建立與不同傳訊提供者的連線,您必須建立新的 Connection Factory ,並指定傳訊提供者。 在 IBM MQ 8.0中無法使用即時傳輸。 如果您使用 IBM MQ 8.0 ,您可以定義「即時」傳輸,但在嘗試建立連線時失敗。
不關聯於特定網域的 Connection Factory
有兩種傳訊網域:點對點傳訊網域和發佈/訂閱傳訊網域。 您可以建立一個 Connection Factory 來特別針對點對點傳訊(使用 QueueConnectionFactory 介面)或特別針對發佈/訂閱傳訊(使用 TopicConnectionFactory 介面)建立連線。 從 JNDI,您也可以建立與網域無關的 Connection Factory ,以便同時用於點對點和發佈/訂閱傳訊 (使用 ConnectionFactory 介面)。 如需相關資訊,請參閱 建立 Connection Factory。
如果 JMS 應用程式預期只使用點對點傳訊或發佈/訂閱傳訊,當您建立 Connection Factory 時,可以選取特定的傳訊網域,並建立網域特定的 Connection Factory。
不過,如果您想要在相同交易之下同時執行點對點和發佈/訂閱工作,可建立不關聯於特定網域的 Connection Factory。 例如,您可能想要 JMS 應用程式訂閱主題 (發佈/訂閱傳訊) ,當 JMS 應用程式收到特定訊息時,它會將另一則訊息傳送至佇列 (點對點傳訊)。 如果您使用網域專用 Connection Factory,則很難在相同交易中同時可靠地執行點對點及發佈/訂閱工作:您必須為每個傳訊網域建立個別的 Connection Factory,這表示點對點工作會在 QueueSession 階段作業所控制的交易中執行,而發佈/訂閱工作會在 TopicSession 階段作業所控制的交易中執行。 要確定已發生或已取消傳送和接收動作很困難。
不必為點對點工作建立一個特定網域的 Connection Factory,以及為發佈/訂閱工作建立一個特定網域的 Connection Factory,您可以為兩者建立不關聯於特定網域的單一 Connection Factory。 這表示 Connection Factory 會建立一條連線,從而建立一個階段作業。 此階段作業從主題建立 MessageConsumer,並建立一個 MessageProducer 到佇列中。 當 JMS 應用程式接收已發佈的訊息時,下一個訊息可以在相同階段作業的交易下傳送至佇列; 然後兩個作業都可以作為單一工作單元來確定或回復。
如需相關資訊,請參閱 IBM Documentation中的 Using IBM MQ classes for JMS 。