IBM MQ メッセージング・プロバイダーの使用による複数サーバーのサポートの有効化

一部のサーバーがバッチ・ディスパッチャーとして機能し、それ以外のサーバーがバッチ executor として機能するよう、バッチ環境をセットアップすることができます。バッチ・ディスパッチャーは、外部クライアントからの要求を受け入れ、それらの要求をバッチ executor で使用できるようにします。バッチ executor は、定義された能力に合致する要求を受け取って、それらの要求を実行します。バッチ・ディスパッチャーとバッチ executor は、Java Messaging Service (JMS) を使用して通信します。

このタスクについて

このタスクは、IBM MQ メッセージング・プロバイダーを使用したバッチ・ディスパッチ・サーバーとバッチ executor の構成を支援します。

手順

  1. バッチ JMS ディスパッチャーを構成します。
    1. server.xml ファイル内で wmqJmsClient-2.0 フィーチャーをフィーチャー・マネージャーに追加することによって、JMS サポートを有効にします。MQ を z/OS 上で BINDINGS モードで使用する場合、zosTransaction-1.0 フィーチャーを追加します。
    2. バッチ・ディスパッチャーをホストするサーバー上で server.xml ファイルに batchJmsDispatcher エレメントを追加します。
      <batchJmsDispatcher connectionFactoryRef={reference to a configured JMS connection factory}
      	queueRef={reference to a configured JMS queue} />
      注: connectionFactoryRef 属性および queueRef 属性を指定しない場合、connectionFactoryRef のデフォルト値は batchConnectionFactoryqueueRef のデフォルト値は batchJobSubmissionQueue です。batchJmsDispatcher エレメントを <batchJmsDispatcher/> と指定することができます。それでも、 server.xml ファイル内で、batchConnectionFactory JMS 接続ファクトリーおよび JMS batchJobSubmissionQueue キューを構成する必要はあります。
    3. 対応する JMS 接続ファクトリーおよび 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 BINDINGS 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>
      注: 例に示されているように、jmsQueueConnectionFactory エレメントではなく、jmsConnectionFactory エレメントを参照していることを確認してください。jmsQueueConnectionFactory エレメントを使用した場合、機能しません。構成には jmsConnectionFactory エレメントと jmsQueue エレメントの両方を含める必要がありますが、jmsQueueConnectionFactory エレメントは含めてはいけません。
  2. バッチ JMS executor を構成します。
    1. server.xml ファイル内で wmqJmsClient-2.0 フィーチャーをフィーチャー・マネージャーに追加することによって、JMS サポートを有効にします。
    2. バッチ executor をホストするサーバー上で server.xml ファイルに batchJmsExecutor エレメントを追加します。
      <batchJmsExecutor activationSpecRef={configured activation specification or batch executor}
      	queueRef={reference to the configured JMS queue} />
      注: activationSpecRef 属性および queueRef 属性を指定しない場合、activationSpecRef のデフォルト値は batchActivationSpecqueueRef のデフォルト値は batchJobSubmissionQueue です。batchJmsExecutor エレメントを <batchJmsExecutor/> と指定することができます。それでも、 server.xml ファイル内で、batchActivationSpec の JMS アクティベーション・スペックと batchJobSubmissionQueue JMS キューを構成する必要はあります。

      [18.0.0.1 and later]バッチ・グループ・セキュリティーを適用したい場合は、server.xml ファイル内で app-Security-2.0 フィーチャーをフィーチャー・マネージャーに追加することによって、Liberty セキュリティー・フィーチャーを有効にします。また、以下の例で示されているように、batchJmsExecutor エレメントに batchOperationGroupRef 属性を追加します。

      <batchJmsExecutor activationSpecRef={configured activation specification or batch executor}
              queueRef={reference to the configured JMS queue} />
    3. 対応する JMS アクティベーション・スペックおよび JMS キューをサーバー構成に追加します。これは、バッチ構成に特有のものではありません。
    4. オプション: [18.0.0.1 and later]バッチ・グループ・セキュリティーを適用したい場合は、以下の例で示されているように、対応するオペレーション・グループ名スタンザを batchJmsExecutor エレメントに追加します。
      <batchJmsExecutor activationSpecRef={configured activation specification or batch executor}
                    queueRef={reference to the configured JMS queue} >
              <operationGroup>GroupA</operationGroup>
       </batchJmsExecutor>
      注: 前にリストされたグループ名をサポートするように、セキュリティー・レジストリーを構成する必要があります。
    5. アクティベーション・スペックに JMS メッセージ・セレクターを含めることによって、バッチ executor サーバーの能力を定義します。
      • システム定義プロパティーに基づくフィルター操作:

        バッチ executor がインバウンド・メッセージのフィルター操作に使用できる、バッチ JMS メッセージに関して使用可能なバッチ・ディスパッチャー・プロパティーのセットがあります。

        • com_ibm_ws_batch_applicationName: ジョブ要求のバッチ・アプリケーションの名前
        • com_ibm_ws_batch_moduleName: ジョブ要求のバッチ・アプリケーションのモジュール名
        • com_ibm_ws_batch_componentName: ジョブ要求のバッチ・アプリケーションのコンポーネント名
        注: executor が処理可能なジョブのみを受け取るようにするために、少なくとも com_ibm_ws_batch_applicationName プロパティーを使用してメッセージ・セレクターを指定することが推奨されます。
        次の例は、executor がアプリケーション SimpleBatchJob および BonusPayout のジョブを受け入れるようにするための messageSelector 属性を示します。
        messageSelector="com_ibm_ws_batch_applicationName = 'SimpleBatchJob' OR com_ibm_ws_batch_applicationName = 'BonusPayout'">
        次の例は、executor がアプリケーション SimpleBatchJob のジョブを受け入れるようにするための messageSelector 属性を示しています。
        messageSelector="com_ibm_ws_batch_applicationName = 'SimpleBatchJob'">
      • ユーザー定義プロパティーに基づくフィルター操作:

        バッチ・ディスパッチャーは、バッチ・ディスパッチャー要求メッセージに対する適切な JMS メッセージ・プロパティーに適合するすべてのジョブ・パラメーターを設定します。 これらのプロパティーは、メッセージ・セレクターにさらにフィルター操作を追加するためにメッセージ・セレクターが使用することもできます。 プロパティーの名前または ID は、JMS メッセージ・プロパティー制約に準拠している必要があります。例えば、 プロパティーは、文字と数字からなる長さ無制限の文字列であり、先頭は文字でなければなりません。文字とは、 メソッド Character.isJavaLettertrue を返す任意のキャラクターであり、「_」および「$」も含まれます。文字または数字とは、 メソッド Character.isJavaLetterOrDigittrue を返す任意のキャラクターです。JMS メッセージ・セレクターについて詳しくは、JMS Javadoc を参照してください。

        次の例は、com_ibm_ws_batch_applicationName プロパティーおよびジョブ・パラメーター specialCapability を使用するメッセージ・セレクターの例です。
        messageSelector="com_ibm_ws_batch_applicationName = 'SimpleBatchJob' AND specialCapability = 'superCapability'">
      [18.0.0.1 and later]以下の例は、IBM MQ バインディング・モードを使用した、オペレーション・グループを指定して構成されたバッチ JMS executor とその JMS 構成を示します。
      <batchJmsExecutor activationSpecRef="batchActivationSpec"
      		  queueRef="batchJobSubmissionQueue"/>
            <operationGroup>GroupA</operationGroup>
      </batchJmsExecutor>
      
      <!-- 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'"
                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>
      [18.0.0.1 and later]以下の例は、IBM MQ クライアント・モードを使用した、オペレーション・グループを指定して構成されたバッチ JMS executor とその JMS 構成を示します。
      <batchJmsExecutor activationSpecRef="batchActivationSpec"
      		  queueRef="batchJobSubmissionQueue"/>
            <operationGroup>GroupA</operationGroup>
      </batchJmsExecutor>
      
      <!-- 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. バッチ・アプリケーションをサーバーにインストールします。詳しくは、Liberty でのアプリケーションのデプロイを参照してください。 [17.0.0.3 and later]
    注: ジョブ・メッセージの配信を遅らせるには、ジョブ・パラメーター com_ibm_ws_batch_message_deliveryDelay を指定してジョブを実行依頼します。このジョブ・パラメーターは、executor サーバーへのメッセージの配信を遅らせるミリ秒数に設定されます。IBM MQ がメッセージの配信を遅らせるには、CSQ4INSG IBM MQ インストール・ジョブによって SYSTEM.DDELAY.LOCAL.QUEUE が定義されている必要があります。このキューが定義されていないと、MQRC_UNKNOWN_OBJECT_NAME エラーが表示されます。

    ジョブ・メッセージの優先順位を変更するには、ジョブ・パラメーター com_ibm_ws_batch_message_priority を指定してジョブを実行依頼します。このジョブ・パラメーターは、有効な JMS メッセージ優先順位 (0 から 9) に設定されます。JMS 仕様は、デフォルトのメッセージ優先順位を「4」として定義します。最も低い優先順位はゼロ、最も高い優先順位は 9 です。優先度の設定を有効にするには、properties.wmqJms 構成の優先順位設定を、QDEF ではなく APP に設定する必要があります。QDEF の値を設定すると、キュー定義のデフォルト優先順位が使用されます。キュー定義自体では、MsgDeliverySequence が MQMDS_PRIORITY に設定されている必要があります。

    失敗したジョブの再始動では、再始動時にジョブ・パラメーターとして別の値が指定されていない限り、元のジョブと同じ遅延と優先順位が使用されます。優先順位は、マルチサーバー・パーティションのメッセージに伝搬されますが、配信の遅延は伝搬されません。


トピックのタイプを示すアイコン タスク・トピック

ファイル名: twlp_batch_multiJVMmq.html