利用 IBM MQ 傳訊提供者來啟用多伺服器分割區支援

您可以設定批次環境,讓某些伺服器充當批次分派器,而其他伺服器則充當批次執行程式。

關於這項作業

批次分派器會接受外部用戶端的要求,並提供給批次執行程式使用。批次執行程式會接收符合其定義之功能的要求,並執行這些要求。如果工作是配置成執行分割區,批次執行程式會將它們提供給其他執行程式來執行。批次執行程式會利用 Java 傳訊服務 (JMS) 來通訊。這個作業利用 IBM MQ 傳訊提供者,來協助您配置批次分派伺服器和批次執行程式。

程序

  1. 配置批次 JMS 分派器。
    1. wmqJmsClient-2.0 特性新增至 server.xml 檔,來啟用 JMS 支援。
    2. 在管理批次分派器的伺服器上,將 batchJmsDispatcher 元素新增至 server.xml 檔;例如:
      <batchJmsDispatcher connectionFactoryRef={參照至所配置的 JMS Connection Factory}
      	queueRef={參照至所配置的 JMS 佇列} />
      註: 如果您沒有指定 connectionFactoryRefqueueRef 屬性,connectionFactoryRef 的預設值為 batchConnectionFactoryqueueRef 的預設值為 batchJobSubmissionQueue。您可以將 batchJmsDispatcher 元素指定為 <batchJmsDispatcher/>。在 server.xml 檔中,您仍必須配置 batchConnectionFactory JMS Connection Factory 和 JMS batchJobSubmissionQueue 佇列。
    3. 將對應 JMS Connection Factory 和 JMS 佇列新增至伺服器配置。不是只有批次配置,才這樣做。

      下列範例利用 IBM MQ 連結模式來說明批次 JMS 分派器配置及其 JMS 配置:

      <batchJmsDispatcher connectionFactoryRef="batchConnectionFactory"
      		      queueRef="batchJobSubmissionQueue" />
      
      <!-- wmq resource adapter -->
      <variable name="wmqJmsClient.rar.location"
         	value="${server.config.dir}/wmq.wlp.rar"/>
      
      <!-- nativeLibraryPath is required for BINDING mode -->
      <!-- the startup retry and reconnect retry properties are 
           recommended to ensure robustness of the system.-->
      <wmqJmsClient nativeLibraryPath="/mqm/jms/java/lib" 
      		startupRetryCount=999
      		startupRetryInterval="1000ms"
      		reconnectionRetryCount=10
      		reconnectionRetryInterval="5m">
      </wmqJmsClient>
      
      <authData password="pwd" user="user">
      </authData>
      
      <jmsConnectionFactory id="batchConnectionFactory"	
      		      jndiName="jms/batch/connectionFactory">
      	<properties.wmqJms transportType="BINDINGS"
      			   queueManager="WMQX">
      	</properties.wmqJms>
      </jmsConnectionFactory>
      
      <!-- baseQueueName is the queue defined on WMQ system -->
      <jmsQueue id="batchJobSubmissionQueue"
      	  jndiName="jms/batch/jobSubmissionQueue">
          <properties.wmqJms baseQueueName="BATCHQ"
      			  priority="QDEF"
      			  baseQueueManagerName="WMQX">
          </properties.wmqJms>
      </jmsQueue>

      下列範例利用用戶端模式下的 IBM MQ 來說明批次 JMS 分派器配置及其 JMS 配置:

      <batchJmsDispatcher connectionFactoryRef="batchConnectionFactory"
      		      queueRef="batchJobSubmissionQueue" />
      
      <!-- wmq resource adapter -->
      <variable name="wmqJmsClient.rar.location"
         	value="${server.config.dir}/wmq.wlp.rar"/>
      
      <!-- the startup retry and reconnect retry properties are 
           recommended to ensure robustness of the system.-->
      <wmqJmsClient startupRetryCount=999
      		 startupRetryInterval="1000ms"
      		 reconnectionRetryCount=10
      		 reconnectionRetryInterval="5m">
      </wmqJmsClient>
      
      <authData password="pwd" user="user">
      </authData>
      
      <jmsConnectionFactory id="batchConnectionFactory"	
      		      jndiName="jms/batch/connectionFactory">
      	<properties.wmqJms
      			   hostName="webs24.pok.stglabs.ibm.com"
      			   transportType="CLIENT"
      			   channel="WAS.JMS.SVRCONN"
      			   port="1414"
      			   queueManager="WMQX"/>>
      	</properties.wmqJms>
      </jmsConnectionFactory>
      
      <!-- baseQueueName is the queue defined on WMQ system -->
      <jmsQueue id="batchJobSubmissionQueue"
      	  jndiName="jms/batch/jobSubmissionQueue">
          <properties.wmqJms baseQueueName="BATCHQ"
      			  priority="QDEF"
      			  baseQueueManagerName="WMQX">
          </properties.wmqJms>
      </jmsQueue>
      註: 請確定您所參照的是 jmsConnectionFactory 元素(如範例所示),而不是 jmsQueueConnectionFactory 元素。如果使用 jmsQueueConnectionFactory 元素,將無法運作。您的配置應同時包含 jmsConnectionFactory 元素和 jmsQueue 元素,但不包含 jmsQueueConnectionFactory 元素。
  2. 配置批次 JMS 執行程式,以執行工作
    1. wmqJmsClient-2.0 特性新增至 server.xml 檔,來啟用 JMS 支援。
    2. 在管理批次執行程式的伺服器上,將 batchJmsDispatcher 元素新增至 server.xml 檔。
      註: 如果您沒有將 batchJmsDispatcher 元素新增至 server.xml 檔,伺服器就不會將分割區分派到多部伺服器上執行,而會在本端執行分割區。
    3. 在管理批次執行程式的伺服器上,將 batchJmsExecutor 元素和 connectionFactory 新增至 server.xml 檔。如需相關資訊,請參閱步驟 1b 和 1c。
      <batchJmsExecutor activationSpecRef={所配置的啟動規格或批次執行程式}
      	queueRef={參照至所配置的 JMS 佇列} />
      註: 如果您沒有指定 activationSpecRefqueueRef 屬性,activationSpecRef 的預設值為 batchActivationSpecqueueRef 的預設值為 batchJobSubmissionQueue。您可以將 batchJmsExecutor 元素指定為 <batchJmsExecutor/>。在 server.xml 檔中,您仍必須為 batchActivationSpec 配置 JMS 啟動規格,以及為 batchJobSubmissionQueue 配置 JMS 佇列。
    4. 將對應 JMS 啟動規格和 JMS 佇列新增至伺服器配置。不是只有批次配置,才這樣做。
    5. 在啟動規格中包含 JMS 訊息選取器,來定義批次執行程式伺服器的功能。
      • 根據系統定義的內容來過濾:

        以下是批次 JMS 訊息上的可用批次分派器內容,可供批次執行程式用來過濾,以取得入埠訊息。

        • com_ibm_ws_batch_applicationName:用來取得工作要求的批次應用程式名稱
        • com_ibm_ws_batch_moduleName:用來取得工作要求的批次應用程式模組名稱
        • com_ibm_ws_batch_componentName:用來取得工作要求的批次應用程式元件名稱
        • com_ibm_ws_batch_work_type:工作類型:"Job"
        註: 請使用至少一個 com_ibm_ws_batch_applicationName 內容,來指定訊息選取器,以確保該執行程式僅會接收它可處理的工作。
        下列範例指出執行程式的 messageSelector 屬性,以便接受應用程式 SimpleBatchJobBonusPayout 的工作:
        messageSelector="com_ibm_ws_batch_applicationName = 'SimpleBatchJob' OR com_ibm_ws_batch_applicationName = 'BonusPayout'">
      • 根據使用者定義的內容來過濾:

        批次分派器會設定所有的工作參數,且這些參數符合批次分派器要求訊息中的適當 JMS 訊息內容。訊息選取器也可以使用這些內容,在訊息選取器中新增額外的過濾條件。內容名稱或 ID 必須符合 JMS 訊息內容限制。 舉例來說,內容是長度不限的一連串字母和數字,且開頭必須是字母。只要 Character.isJavaLetter 方法傳回 true,字母可以是任何字元,包括 '_' 和 '$' 都是。只要 Character.isJavaLetterOrDigit 方法傳回 true,字母或數字可以是任何字元。如需 JMS 訊息選取器的相關資訊,請查看 JMS API 文件。

        下列範例說明可能的訊息選取器,它使用 com_ibm_ws_batch_applicationName 內容和 specialCapability 工作參數:
        messageSelector="com_ibm_ws_batch_applicationName = 'SimpleBatchJob' AND specialCapability = 'superCapability'">
      下列範例利用 IBM MQ 連結模式來說明批次 JMS 執行程式配置及其 JMS 配置:
      <batchJmsExecutor activationSpecRef="batchActivationSpec"
      		  queueRef="batchJobSubmissionQueue"/>
      
      <!-- wmq resource adapter -->
      <variable name="wmqJmsClient.rar.location"
                value="${server.config.dir}/wmq.wlp.rar"/>
      
      <!-- nativeLibraryPath is required for BINDING mode -->
      <!-- the startup retry and reconnect retry properties are
           recommended to ensure robustness of the system.-->
      <wmqJmsClient nativeLibraryPath="/mqm/jms/java/lib" 
      		startupRetryCount=999
      		startupRetryInterval="1000ms"
      		reconnectionRetryCount=10
      		reconnectionRetryInterval="5m">
      </wmqJmsClient>
      
      <authData password="pwd" user="user">
      </authData>
      
      <JmsActivationSpec id="batchActivationSpec" >
          <properties.wmqJms destinationRef="batchJobSubmissionQueue"
                destinationType="javax.jms.Queue"
                messageSelector="(com_ibm_ws_batch_applicationName = 'SimpleBatchJob' OR com_ibm_ws_batch_applicationName = 'BonusPayout') AND com_ibm_ws_batch_work_type='Job'""
                transportType="BINDINGS"
                queueManager="WMQX">
          </properties.wmqJms>
      </jmsActivationSpec>
      
      <!-- baseQueueName is the queue defined on WMQ system -->
      <jmsQueue id="batchJobSubmissionQueue"
      	  jndiName="jms/batch/jobSubmissionQueue">
          <properties.wmqJms baseQueueName="BATCHQ"
                priority="QDEF"
                baseQueueManagerName="WMQX">
          </properties.wmqJms>
      </jmsQueue>
      下列範例使用 WebSphere MQ 用戶端模式,來說明批次 JMS 執行程式配置及其 JMS 配置。
      <batchJmsExecutor activationSpecRef="batchActivationSpec"
      		  queueRef="batchJobSubmissionQueue"/>
      
      <!-- wmq resource adapter -->
      <variable name="wmqJmsClient.rar.location"
                value="${server.config.dir}/wmq.wlp.rar"/>
      
      <!-- the startup retry and reconnect retry properties are
           recommended to ensure robustness of the system.-->
      <wmqJmsClient startupRetryCount=999  
      		 startupRetryInterval="1000ms"
      		 reconnectionRetryCount=10
      		 reconnectionRetryInterval="5m">
      </wmqJmsClient>
      
      <authData password="pwd" user="user">
      </authData>
      
      <JmsActivationSpec id="batchActivationSpec" >
          <properties.wmqJms destinationRef="batchJobSubmissionQueue"
      			   messageSelector="com_ibm_ws_batch_applicationName = SimpleBatchJob' OR com_ibm_ws_batch_applicationName = 'BonusPayout'"
      		 transportType="CLIENT"
      		 channel="WAS.JMS.SVRCONN"
      		 destinationType="javax.jms.Queue"
      		 queueManager="WMQX"
      		 hostName="webs24.pok.stglabs.ibm.com"
      		 port="1414">
          </properties.wmqJms>
      </jmsActivationSpec>
      
      <!-- baseQueueName is the queue defined on WMQ system -->
      <jmsQueue id="batchJobSubmissionQueue"
      	  jndiName="jms/batch/jobSubmissionQueue">
          <properties.wmqJms baseQueueName="BATCHQ"
         	baseQueueManagerName="WMQX">
          </properties.wmqJms>
      </jmsQueue>
  3. 配置批次 JMS 執行程式,以便只執行分割區。
    1. wmqJmsClient-2.0 特性新增至 server.xml 檔,來啟用 JMS 支援。
    2. 在管理批次執行程式的伺服器上,將 batchJmsExecutor 元素和 connectionFactory 新增至 server.xml 檔。如需相關資訊,請參閱步驟 1b 和 1c。
      <batchJmsExecutor activationSpecRef={所配置的啟動規格或批次執行程式}
      	queueRef={參照至所配置的 JMS 佇列}
             replyConnectionFactoryRef={參照至所配置的 JMS Connection Factory} />
      註: 如果您沒有指定 activationSpecRefqueueRef 屬性,activationSpecRef 的預設值為 batchActivationSpecqueueRef 的預設值為 batchJobSubmissionQueue。您可以將 batchJmsExecutor 元素指定為 <batchJmsExecutor/>。在 server.xml 檔中,您仍必須為 batchActivationSpec 配置 JMS 啟動規格,以及為 batchJobSubmissionQueue 配置 JMS 佇列。
    3. 將對應 JMS 啟動規格和 JMS 佇列新增至伺服器配置。不是只有批次配置,才這樣做。
    4. 在啟動規格中包含 JMS 訊息選取器,來定義批次執行程式伺服器的功能。
      • 根據系統定義的內容來過濾:

        以下是批次 JMS 訊息上的可用批次分派器內容,可供批次執行程式用來過濾,以取得入埠訊息。

        • com_ibm_ws_batch_applicationName:用來取得工作要求的批次應用程式名稱
        • com_ibm_ws_batch_moduleName:用來取得工作要求的批次應用程式模組名稱
        • com_ibm_ws_batch_componentName:用來取得工作要求的批次應用程式元件名稱
        • com_ibm_ws_batch_work_type:工作類型:"Partition"
        • com_ibm_ws_batch_partitionNum(Type=Integer):要分派之分割區的分割區號碼
        • com_ibm_ws_batch_stepName:定義在 JSL 中的步驟名稱
        註: 請使用至少一個 com_ibm_ws_batch_applicationName 內容,來指定訊息選取器,以確保該執行程式僅會接收它可處理的工作。
        下列範例指出執行程式的 messageSelector 屬性,以便接受應用程式 SimpleBatchJobBonusPayout 的工作:
        messageSelector="com_ibm_ws_batch_applicationName = 'SimpleBatchJob' OR com_ibm_ws_batch_applicationName = 'BonusPayout'">
      • 根據使用者定義的內容來過濾:

        批次分派器會設定所有的工作參數,且這些參數符合批次分派器要求訊息中的適當 JMS 訊息內容。訊息選取器也可以使用這些內容,在訊息選取器中新增額外的過濾條件。內容名稱或 ID 必須符合 JMS 訊息內容限制。 舉例來說,內容是長度不限的一連串字母和數字,且開頭必須是字母。只要 Character.isJavaLetter 方法傳回 true,字母可以是任何字元,包括 '_' 和 '$' 都是。只要 Character.isJavaLetterOrDigit 方法傳回 true,字母或數字可以是任何字元。如需 JMS 訊息選取器的相關資訊,請查看 JMS API 文件。

        下列範例說明可能的訊息選取器,它使用 com_ibm_ws_batch_applicationName 內容和 specialCapability 工作參數:
        messageSelector="com_ibm_ws_batch_applicationName = 'SimpleBatchJob' AND specialCapability = 'superCapability'">
      下列範例利用 IBM MQ 連結模式來說明批次 JMS 執行程式配置及其 JMS 配置:
      <jmsConnectionFactory id="batchConnectionFactory"
                            jndiName="jms/batch/connectionFactory"/>
      
      <batchJmsExecutor activationSpecRef="batchActivationSpec"
      		  queueRef="batchJobSubmissionQueue"/>
                     replyConnectionFactoryRef="batchConnectionFactory"/>
      
      <!-- wmq resource adapter -->
      <variable name="wmqJmsClient.rar.location"
                value="${server.config.dir}/wmq.wlp.rar"/>
      
      <!-- nativeLibraryPath is required for BINDING mode -->
      <!-- the startup retry and reconnect retry properties are
           recommended to ensure robustness of the system.-->
      <wmqJmsClient nativeLibraryPath="/mqm/jms/java/lib" 
      		startupRetryCount=999
      		startupRetryInterval="1000ms"
      		reconnectionRetryCount=10
      		reconnectionRetryInterval="5m">
      </wmqJmsClient>
      
      <authData password="pwd" user="user">
      </authData>
      
      <JmsActivationSpec id="batchActivationSpec" >
          <properties.wmqJms destinationRef="batchJobSubmissionQueue"
                destinationType="javax.jms.Queue"
                messageSelector="(com_ibm_ws_batch_applicationName = 'SimpleBatchJob' OR com_ibm_ws_batch_applicationName = 'BonusPayout') AND com_ibm_batch_work_type='Job'""
                transportType="BINDINGS"
                queueManager="WMQX">
          </properties.wmqJms>
      </jmsActivationSpec>
      
      <!-- baseQueueName is the queue defined on WMQ system -->
      <jmsQueue id="batchJobSubmissionQueue"
      	  jndiName="jms/batch/jobSubmissionQueue">
          <properties.wmqJms baseQueueName="BATCHQ"
                priority="QDEF"
                baseQueueManagerName="WMQX">
          </properties.wmqJms>
      </jmsQueue>
      下列範例使用 WebSphere MQ 用戶端模式,來說明批次 JMS 執行程式配置及其 JMS 配置。
      <jmsConnectionFactory id="batchConnectionFactory"
                            jndiName="jms/batch/connectionFactory"/>
      
      <batchJmsExecutor activationSpecRef="batchActivationSpec"
      		  queueRef="batchJobSubmissionQueue"/>
                     replyConnectionFactoryRef="batchConnectionFactory"/>
      
      <!-- wmq resource adapter -->
      <variable name="wmqJmsClient.rar.location"
                value="${server.config.dir}/wmq.wlp.rar"/>
      
      <!-- the startup retry and reconnect retry properties are
           recommended to ensure robustness of the system.-->
      <wmqJmsClient startupRetryCount=999  
      		 startupRetryInterval="1000ms"
      		 reconnectionRetryCount=10
      		 reconnectionRetryInterval="5m">
      </wmqJmsClient>
      
      <authData password="pwd" user="user">
      </authData>
      
      <JmsActivationSpec id="batchActivationSpec" >
          <properties.wmqJms destinationRef="batchJobSubmissionQueue"
      			   messageSelector="com_ibm_ws_batch_applicationName = SimpleBatchJob' OR com_ibm_ws_batch_applicationName = 'BonusPayout'"
      		 transportType="CLIENT"
      		 channel="WAS.JMS.SVRCONN"
      		 destinationType="javax.jms.Queue"
      		 queueManager="WMQX"
      		 hostName="webs24.pok.stglabs.ibm.com"
      		 port="1414">
          </properties.wmqJms>
      </jmsActivationSpec>
      
      <!-- baseQueueName is the queue defined on WMQ system -->
      <jmsQueue id="batchJobSubmissionQueue"
      	  jndiName="jms/batch/jobSubmissionQueue">
          <properties.wmqJms baseQueueName="BATCHQ"
         	baseQueueManagerName="WMQX">
          </properties.wmqJms>
      </jmsQueue>
  4. 將批次應用程式安裝在伺服器上。如需相關資訊,請參閱將應用程式部署在 Liberty 中 停用多伺服器分割區的執行:如果您想具有多伺服器支援,卻不想執行多伺服器分割區,可在 jsl 工作 XML 檔中,將 come.ibm.websphere.batch.partition.multiJVM 工作內容設為 false。下列範例說明停用多伺服器分割區的 JSL 工作:
    <property name="com.ibm.websphere.batch.partition.multiJVM" value="false"/>
    註: 如果您在遠端執行程式上執行分割區,不會建立該分割區的工作日誌。

指示主題類型的圖示 作業主題



「時間戳記」圖示 前次更新: 2016 年 11 月 30 日
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twlp_batch_multipartitionsmq
檔名:twlp_batch_multipartitionsmq.html