Habilitación del soporte de varias particiones de servidor mediante el proveedor de mensajería IBM MQ

Puede configurar el entorno de proceso por lotes para que algunos servidores funcionen como asignadores por lotes, mientras que otros funcionarán como ejecutores por lotes.

Acerca de esta tarea

Los asignadores por lotes aceptan solicitudes de clientes externos y hacen que estén disponibles para los ejecutores por lotes. Los ejecutores por lotes reciben solicitudes que coinciden con sus prestaciones definidas y las ejecutan. Si el trabajo está configurado para ejecutar particiones, los ejecutores por lotes hacen que estén disponibles para que las ejecuten los otros ejecutores. Los ejecutores por lotes se comunican utilizando Java Messaging Service (JMS). Esta tarea le ayuda a configurar el servidor de asignación de lotes y el ejecutor por lotes utilizando el proveedor de mensajería IBM MQ.

Procedimiento

  1. Configure el asignador de JMS por lotes.
    1. Habilite el soporte JMS añadiendo la característica wmqJmsClient-2.0 al gestor de características en el archivo server.xml.
    2. Añada el elemento batchJmsDispatcher al archivo server.xml en el servidor que aloja el asignador por lotes; por ejemplo:
      <batchJmsDispatcher connectionFactoryRef={referencia a una fábrica de conexiones JMS configurada}
      	queueRef={referencia a una cola JMS configurada} />
      Nota: Si no especifica los atributos connectionFactoryRef y queueRef, el valor predeterminado de connectionFactoryRef es batchConnectionFactory y el valor predeterminado de queueRef es batchJobSubmissionQueue. Puede especificar el elemento batchJmsDispatcher como <batchJmsDispatcher/>. Todavía debe configurar la fábrica de conexiones JMS batchConnectionFactory y la cola JMS batchJobSubmissionQueue en el archivo server.xml.
    3. Añada la fábrica de conexiones JMS correspondiente y la cola JMS a la configuración del servidor. Esta incorporación no es específica a la configuración por lotes.

      El ejemplo siguiente ilustra la configuración del asignador JMS por lotes y su configuración de JMS mediante el uso de la modalidad de enlaces de IBM MQ:

      <batchJmsDispatcher connectionFactoryRef="batchConnectionFactory"
      		      queueRef="batchJobSubmissionQueue" />
      
      <!-- adaptador de recursos wmq -->
      <variable name="wmqJmsClient.rar.location"
         	value="${server.config.dir}/wmq.wlp.rar"/>
      
      <!-- nativeLibraryPath es necesario para la modalidad BINDINGS -->
      <!-- the startup retry and reconnect retry properties are 
           recomendado para garantizar solidez del sistema.-->
      <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 es la cola definida en el sistema WMQ -->
      <jmsQueue id="batchJobSubmissionQueue"
      	  jndiName="jms/batch/jobSubmissionQueue">
          <properties.wmqJms baseQueueName="BATCHQ"
      			  priority="QDEF"
      			  baseQueueManagerName="WMQX">
          </properties.wmqJms>
      </jmsQueue>

      El ejemplo siguiente ilustra la configuración de asignador JMS por lotes y su configuración de JMS mediante el uso de IBM MQ en la modalidad cliente:

      <batchJmsDispatcher connectionFactoryRef="batchConnectionFactory"
      		      queueRef="batchJobSubmissionQueue" />
      
      <!-- adaptador de recursos wmq -->
      <variable name="wmqJmsClient.rar.location"
         	value="${server.config.dir}/wmq.wlp.rar"/>
      
      <!-- the startup retry and reconnect retry properties are 
           recomendado para garantizar solidez del sistema.-->
      <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 es la cola definida en el sistema WMQ -->
      <jmsQueue id="batchJobSubmissionQueue"
      	  jndiName="jms/batch/jobSubmissionQueue">
          <properties.wmqJms baseQueueName="BATCHQ"
      			  priority="QDEF"
      			  baseQueueManagerName="WMQX">
          </properties.wmqJms>
      </jmsQueue>
      Nota: Asegúrese de que se hace referencia a un elemento jmsConnectionFactory, como se muestra en el ejemplo, y no a un elemento jmsQueueConnectionFactory. El uso de un elemento jmsQueueConnectionFactory no funciona. La configuración debe incluir tanto un elemento jmsConnectionFactory como un elemento jmsQueue, pero no un elemento jmsQueueConnectionFactory.
  2. Configure el ejecutor JMS por lotes para ejecutar trabajos
    1. Habilite el soporte JMS añadiendo la característica wmqJmsClient-2.0 al gestor de características en el archivo server.xml.
    2. Añada el elemento batchJmsDispatcher al archivo server.xml en el servidor que aloja el ejecutor por lotes.
      Nota: Si no añade el elemento batchJmsDispatcher al archivo server.xml, el servidor no asigna particiones para ejecutarse en varios servidores y no ejecuta las particiones localmente.
    3. Añada el elemento batchJmsExecutor y un connectionFactory al archivo server.xml en el servidor que aloja el asignador por lotes. Para obtener más información, consulte el paso 1b y 1c.
      <batchJmsExecutor activationSpecRef={especificación de activación configurada o ejecutor por lotes configurado}
      	queueRef={referencia a la cola JMS configurada} />
      Nota: Si no especifica los atributos activationSpecRef y queueRef, el valor predeterminado de activationSpecRef es batchActivationSpec y el valor predeterminado de queueRef es batchJobSubmissionQueue. Puede especificar el elemento batchJmsExecutor como <batchJmsExecutor/>. Todavía debe configurar la especificación de activación JMS para la cola JMS batchActivationSpec y batchJobSubmissionQueue en el archivo server.xml.
    4. Añada la especificación de activación JMS correspondiente y la cola JMS a la configuración del servidor. Esta incorporación no es específica a la configuración por lotes.
    5. Defina las prestaciones del servidor ejecutor por lotes incluyendo un selector de mensajes JMS en la especificación de activación.
      • Filtrado basado en las propiedades definidas por el sistema:

        Están disponibles las siguientes propiedades de asignador por lotes en el mensaje JMS por lotes que el ejecutor por lotes puede utilizar para filtrar los mensajes de entrada.

        • com_ibm_ws_batch_applicationName: el nombre de la aplicación por lotes para la solicitud de trabajo
        • com_ibm_ws_batch_moduleName: el nombre de módulo de la aplicación por lotes para la solicitud de trabajo
        • com_ibm_ws_batch_componentName: el nombre de componente de la aplicación por lotes para la solicitud de trabajo
        • com_ibm_ws_batch_work_type: el tipo de trabajo: "Job"
        Nota: Especifique un selector de mensaje con, al menos, la propiedad com_ibm_ws_batch_applicationName para garantizar que el ejecutor solo recibe trabajos que puede procesar.
        El ejemplo siguiente indica el atributo messageSelector para que el ejecutor acepte un trabajo para la aplicación SimpleBatchJob y BonusPayout.
        messageSelector="com_ibm_ws_batch_applicationName = 'SimpleBatchJob' OR com_ibm_ws_batch_applicationName = 'BonusPayout'">
      • Filtrado basado en las propiedades definidas por el usuario:

        El asignador por lotes establece todos los parámetros de trabajo que se ajustan a la propiedad de mensajes JMS adecuada en el mensaje de solicitud del asignador por lotes. El selector de mensajes también puede utilizar estas propiedades para añadir un filtrado adicional al selector de mensajes. El nombre de propiedad, o identificador, debe ajustarse a las restricciones de propiedad de mensaje de JMS. Por ejemplo, la propiedad es una secuencia de longitud ilimitada de letras y dígitos, el primero debe ser una letra. Una letra es cualquier carácter para el que Character.isJavaLetter devuelve true y se incluye '_' y '$'. Una letra o dígito es cualquier carácter para el cual el método Character.isJavaLetterOrDigit devuelve true. Consulte la documentación de la API de JMS para obtener más información sobre selector de mensajes JMS.

        El ejemplo siguiente ilustra un posible selector de mensajes utilizando la propiedad com_ibm_ws_batch_applicationName y un parámetro de trabajo specialCapability:
        messageSelector="com_ibm_ws_batch_applicationName = 'SimpleBatchJob' AND specialCapability = 'superCapability'">
      El ejemplo siguiente ilustra la configuración del ejecutor JMS por lotes y su configuración de JMS utilizando la modalidad de enlaces de IBM MQ:
      <batchJmsExecutor activationSpecRef="batchActivationSpec"
      		  queueRef="batchJobSubmissionQueue"/>
      
      <!-- adaptador de recursos wmq -->
      <variable name="wmqJmsClient.rar.location"
                value="${server.config.dir}/wmq.wlp.rar"/>
      
      <!-- nativeLibraryPath es necesario para la modalidad BINDINGS -->
      <!-- the startup retry and reconnect retry properties are
           recomendado para garantizar solidez del sistema.-->
      <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 es la cola definida en el sistema WMQ -->
      <jmsQueue id="batchJobSubmissionQueue"
      	  jndiName="jms/batch/jobSubmissionQueue">
          <properties.wmqJms baseQueueName="BATCHQ"
                priority="QDEF"
                baseQueueManagerName="WMQX">
          </properties.wmqJms>
      </jmsQueue>
      El ejemplo siguiente ilustra la configuración del ejecutor JMS por lotes y sus configuraciones de JMS utilizando la modalidad de cliente de WebsSphere MQ:
      <batchJmsExecutor activationSpecRef="batchActivationSpec"
      		  queueRef="batchJobSubmissionQueue"/>
      
      <!-- adaptador de recursos wmq -->
      <variable name="wmqJmsClient.rar.location"
                value="${server.config.dir}/wmq.wlp.rar"/>
      
      <!-- the startup retry and reconnect retry properties are
           recomendado para garantizar solidez del sistema.-->
      <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 es la cola definida en el sistema WMQ -->
      <jmsQueue id="batchJobSubmissionQueue"
      	  jndiName="jms/batch/jobSubmissionQueue">
          <properties.wmqJms baseQueueName="BATCHQ"
         	baseQueueManagerName="WMQX">
          </properties.wmqJms>
      </jmsQueue>
  3. Configure el ejecutor JMS por lotes para ejecutar solo particiones.
    1. Habilite el soporte JMS añadiendo la característica wmqJmsClient-2.0 al gestor de características en el archivo server.xml.
    2. Añada el elemento batchJmsExecutor y un connectionFactory al archivo server.xml en el servidor que aloja el asignador por lotes. Para obtener más información, consulte el paso 1b y 1c.
      <batchJmsExecutor activationSpecRef={especificación de activación configurada o ejecutor por lotes configurado}
      	queueRef={referencia a la cola JMS configurada}
             replyConnectionFactoryRef={referencia a la fábrica de conexiones JMS configurada} />
      Nota: Si no especifica los atributos activationSpecRef y queueRef, el valor predeterminado de activationSpecRef es batchActivationSpec y el valor predeterminado de queueRef es batchJobSubmissionQueue. Puede especificar el elemento batchJmsExecutor como <batchJmsExecutor/>. Todavía debe configurar la especificación de activación JMS para la cola JMS batchActivationSpec y batchJobSubmissionQueue en el archivo server.xml.
    3. Añada la especificación de activación JMS correspondiente y la cola JMS a la configuración del servidor. Esta incorporación no es específica a la configuración por lotes.
    4. Defina las prestaciones del servidor ejecutor por lotes incluyendo un selector de mensajes JMS en la especificación de activación.
      • Filtrado basado en las propiedades definidas por el sistema:

        Están disponibles las siguientes propiedades de asignador por lotes en el mensaje JMS por lotes que el ejecutor por lotes puede utilizar para filtrar los mensajes de entrada.

        • com_ibm_ws_batch_applicationName: el nombre de la aplicación por lotes para la solicitud de trabajo
        • com_ibm_ws_batch_moduleName: el nombre de módulo de la aplicación por lotes para la solicitud de trabajo
        • com_ibm_ws_batch_componentName: el nombre de componente de la aplicación por lotes para la solicitud de trabajo
        • com_ibm_ws_batch_work_type: el tipo de trabajo : "Partition"
        • com_ibm_ws_batch_partitionNum(Type=Integer): el número de partición de la partición que se está entregando
        • com_ibm_ws_batch_stepName: el nombre del paso tal como se define en el JSL
        Nota: Especifique un selector de mensaje con, al menos, la propiedad com_ibm_ws_batch_applicationName para garantizar que el ejecutor solo recibe trabajos que puede procesar.
        El ejemplo siguiente indica el atributo messageSelector para que el ejecutor acepte un trabajo para la aplicación SimpleBatchJob y BonusPayout.
        messageSelector="com_ibm_ws_batch_applicationName = 'SimpleBatchJob' OR com_ibm_ws_batch_applicationName = 'BonusPayout'">
      • Filtrado basado en las propiedades definidas por el usuario:

        El asignador por lotes establece todos los parámetros de trabajo que se ajustan a la propiedad de mensajes JMS adecuada en el mensaje de solicitud del asignador por lotes. El selector de mensajes también puede utilizar estas propiedades para añadir un filtrado adicional al selector de mensajes. El nombre de propiedad, o identificador, debe ajustarse a las restricciones de propiedad de mensaje de JMS. Por ejemplo, la propiedad es una secuencia de longitud ilimitada de letras y dígitos, el primero debe ser una letra. Una letra es cualquier carácter para el que Character.isJavaLetter devuelve true y se incluye '_' y '$'. Una letra o dígito es cualquier carácter para el cual el método Character.isJavaLetterOrDigit devuelve true. Consulte la documentación de la API de JMS para obtener más información sobre selector de mensajes JMS.

        El ejemplo siguiente ilustra un posible selector de mensajes utilizando la propiedad com_ibm_ws_batch_applicationName y un parámetro de trabajo specialCapability:
        messageSelector="com_ibm_ws_batch_applicationName = 'SimpleBatchJob' AND specialCapability = 'superCapability'">
      El ejemplo siguiente ilustra la configuración del ejecutor JMS por lotes y su configuración de JMS utilizando la modalidad de enlaces de IBM MQ:
      <jmsConnectionFactory id="batchConnectionFactory"
                            jndiName="jms/batch/connectionFactory"/>
      
      <batchJmsExecutor activationSpecRef="batchActivationSpec"
      		  queueRef="batchJobSubmissionQueue"/>
                     replyConnectionFactoryRef="batchConnectionFactory"/>
      
      <!-- adaptador de recursos wmq -->
      <variable name="wmqJmsClient.rar.location"
                value="${server.config.dir}/wmq.wlp.rar"/>
      
      <!-- nativeLibraryPath es necesario para la modalidad BINDINGS -->
      <!-- the startup retry and reconnect retry properties are
           recomendado para garantizar solidez del sistema.-->
      <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 es la cola definida en el sistema WMQ -->
      <jmsQueue id="batchJobSubmissionQueue"
      	  jndiName="jms/batch/jobSubmissionQueue">
          <properties.wmqJms baseQueueName="BATCHQ"
                priority="QDEF"
                baseQueueManagerName="WMQX">
          </properties.wmqJms>
      </jmsQueue>
      El ejemplo siguiente ilustra la configuración del ejecutor JMS por lotes y sus configuraciones de JMS utilizando la modalidad de cliente de WebsSphere MQ:
      <jmsConnectionFactory id="batchConnectionFactory"
                            jndiName="jms/batch/connectionFactory"/>
      
      <batchJmsExecutor activationSpecRef="batchActivationSpec"
      		  queueRef="batchJobSubmissionQueue"/>
                     replyConnectionFactoryRef="batchConnectionFactory"/>
      
      <!-- adaptador de recursos wmq -->
      <variable name="wmqJmsClient.rar.location"
                value="${server.config.dir}/wmq.wlp.rar"/>
      
      <!-- the startup retry and reconnect retry properties are
           recomendado para garantizar solidez del sistema.-->
      <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 es la cola definida en el sistema WMQ -->
      <jmsQueue id="batchJobSubmissionQueue"
      	  jndiName="jms/batch/jobSubmissionQueue">
          <properties.wmqJms baseQueueName="BATCHQ"
         	baseQueueManagerName="WMQX">
          </properties.wmqJms>
      </jmsQueue>
  4. Instale la aplicación por lotes en el servidor. Para obtener más información, consulte Despliegue de aplicaciones en Liberty. Para inhabilitar varias ejecuciones de partición de servidor: Si desea tener el soporte de varios servidores, pero no desea varias ejecuciones de partición de servidor, puede establecer la propiedad de trabajo come.ibm.websphere.batch.partition.multiJVM en false en el archivo XML del trabajo jsl. En el ejemplo siguiente se muestra un trabajo JSL para inhabilitar varias particiones de servidor:
    <property name="com.ibm.websphere.batch.partition.multiJVM" value="false"/>
    Nota: Si está ejecutando una partición de un ejecutor remoto, no hay registros de trabajo creados para dicha partición.

Icono que indica el tipo de tema Tema de tarea

Nombre de archivo: twlp_batch_multipartitionsmq.html