IBM MQ 메시징 제공자를 사용하여 여러 서버 지원 설정

일부 서버는 일괄처리 디스패처로 작동하고 다른 서버는 일괄처리 실행기로 작동하도록 일괄처리 환경을 설정할 수 있습니다. 일괄처리 디스패처는 외부 클라이언트의 요청을 수락하고 일괄처리 실행기에서 이 요청을 사용할 수 있게 합니다. 일괄처리 실행기는 자신의 정의된 기능과 일치하는 요청을 수신하고 이러한 요청을 실행합니다. 일괄처리 디스패처와 일괄처리 실행기는 Java Messaging Service(JMS)를 사용하여 통신합니다.

이 태스크 정보

이 태스크는 IBM MQ 메시징 제공자를 사용하여 일괄처리 디스패치 서버와 일괄처리 실행기를 구성하는 데 도움을 줍니다.

프로시저

  1. 일괄처리 JMS 디스패처를 구성하십시오.
    1. server.xml 파일에서 wmqJmsClient-2.0 기능을 기능 관리자에 추가하여 JMS 지원을 사용으로 설정하십시오.z/OS에서 BINDINGS 모드로 MQ를 사용하는 경우 zosTransaction-1.0 기능을 추가하십시오.
    2. 일괄처리 디스패처를 호스팅하는 서버의 server.xml 파일에 batchJmsDispatcher 요소를 추가하십시오.
      <batchJmsDispatcher connectionFactoryRef={reference to a configured JMS connection factory}
      	queueRef={reference to a configured JMS queue} />
      참고: connectionFactoryRefqueueRef 속성을 지정하지 않으면 connectionFactoryRef의 기본값은 batchConnectionFactory이며 queueRef의 기본값은 batchJobSubmissionQueue입니다. batchJmsDispatcher 요소를 <batchJmsDispatcher />로 지정할 수 있습니다. batchConnectionFactory JMS 연결 팩토리 및 JMS batchJobSubmissionQueue 큐는 여전히 server.xml 파일에 구성해야 합니다.
    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 요소 사용은 작동하지 않습니다. 구성은 jmsQueueConnectionFactory 요소가 아니라 jmsConnectionFactory 요소 및 jmsQueue 요소를 둘 다 포함해야 합니다.
  2. 일괄처리 JMS 실행기를 구성하십시오.
    1. server.xml 파일에서 wmqJmsClient-2.0 기능을 기능 관리자에 추가하여 JMS 지원을 사용으로 설정하십시오.
    2. 일괄처리 실행기를 호스팅하는 서버의 server.xml 파일에 batchJmsExecutor 요소를 추가하십시오.
      <batchJmsExecutor activationSpecRef={configured activation specification or batch executor}
      	queueRef={reference to the configured JMS queue} />
      참고: activationSpecRefqueueRef 속성을 지정하지 않으면 activationSpecRef의 기본값은 batchActivationSpec이며 queueRef의 기본값은 batchJobSubmissionQueue입니다. batchJmsExecutor 요소를 <batchJmsExecutor />로 지정할 수 있습니다. batchActivationSpec의 JMS 활성화 스펙 및 batchJobSubmissionQueue JMS 큐는 server.xml 파일에 여전히 구성해야 합니다.

      [18.0.0.1 and later]배치 그룹 보안 적용을 원하면 app-Security-2.0 기능을 server.xml 파일의 기능 관리자에 추가하여 Liberty 보안 기능을 사용으로 설정하십시오. 또한 다음 예제와 같이 batchOperationGroupRef 속성을 batchJmsExecutor 요소에 추가하십시오.

      <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 메시지 선택기를 포함시켜 일괄처리 실행기 서버 기능을 정의하십시오.
      • 시스템 정의 특성을 기반으로 하는 필터링:

        일괄처리 JMS 메시지에는 일괄처리 실행기가 인바운드 메시지 필터링에 사용할 수 있는 일괄처리 디스패처 특성 세트가 있습니다.

        • com_ibm_ws_batch_applicationName: 작업 요청에 대한 일괄처리 애플리케이션의 이름
        • com_ibm_ws_batch_moduleName: 작업 요청에 대한 일괄처리 애플리케이션의 모듈 이름
        • com_ibm_ws_batch_componentName: 작업 요청에 대한 일괄처리 애플리케이션의 컴포넌트 이름
        참고: 실행기에서 처리할 수 있는 작업만 수신하도록 하기 위해 최소한의 com_ibm_ws_batch_applicationName 특성을 사용하여 메시지 선택기를 지정하는 것이 좋습니다.
        다음 예제는 애플리케이션 SimpleBatchJobBonusPayout에 대한 작업을 수락하는 실행기의 messageSelector 속성을 나타냅니다.
        messageSelector="com_ibm_ws_batch_applicationName = 'SimpleBatchJob' OR com_ibm_ws_batch_applicationName = 'BonusPayout'">
        다음 예제는 애플리케이션 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 구성으로 구성되는 일괄처리 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 구성으로 구성되는 일괄처리 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 작업 매개변수를 지정하는 작업을 제출하여 실행기 서버로의 메시지 전달을 지연시키십시오. IBM MQ에서 메시지 전달을 지연시키려는 경우 CSQ4INSG IBM MQ 설치 작업에서 SYSTEM.DDELAY.LOCAL.QUEUE를 정의해야 합니다. 큐가 정의되지 않으면 MQRC_UNKNOWN_OBJECT_NAME 오류가 표시됩니다.

    작업 메시지의 우선순위를 변경하려면, 유효한 JMS 메시지 우선순위(0-9)로 설정되는 com_ibm_ws_batch_message_priority 작업 매개변수를 지정하는 작업을 제출하십시오. JMS 스펙에서는 기본 메시지 우선순위를 '4'(최저 0 및 최고 9)로 정의합니다. 우선순위 설정을 적용하려면 properties.wmqJms 구성의 우선순위 설정을 QDEF 대신 APP로 설정해야 합니다. QDEF의 값에 의해 큐 정의의 기본 우선순위가 사용됩니다. 큐 정의 자체에는 MQMDS_PRIORITY로 설정된 MsgDeliverySequence가 있어야 합니다.

    실패한 작업을 재시작하는 경우 재시작 시 다른 값을 작업 매개변수로 지정하지 않는 한 동일한 지연과 우선순위가 원래 작업으로 사용됩니다. 우선순위는 여러 서버 파티션의 메시지에 전파되지만 전달 지연은 전파되지 않습니다.


주제의 유형을 표시하는 아이콘 태스크 주제

파일 이름: twlp_batch_multiJVMmq.html