JMS Connection Factory
Connection Factory 是 JMS 用戶端(使用 JMS API 的 JMS 程式)用來建立與 JNDI 提供者(例如 IBM® MQ 傳訊提供者)連線的物件。
您可以使用 IBM MQ Explorer 來建立 Connection Factory,並定義 Connection Factory 將用來建立連線的連線參數。
Connection Factory 如同目的地一樣,是受管理物件,並儲存在 JNDI 名稱空間中,這是命名和目錄服務內的一個已定義位置。 起始環境定義會定義 JNDI 名稱空間的根目錄。 在 IBM MQ Explorer 中,所有 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 。