Ejecutar el ejemplo Nodo Collector

Ejecutar el ejemplo para enviar los pedidos de cliente 111 y 222

Debe llevar a cabo las instrucciones de configuración, consulte Configuración del ejemplo Nodo Collector e importe y despliegue el flujo de mensajes, consulte Ejemplo Nodo Collector, antes de ejecutar el ejemplo Nodo Collector.

Nota. Puede que le resulte más fácil de entrada guardar los archivos en un directorio temporal, por lo que cuando ejecute el ejemplo puede copiar y pegar los archivos en el directorio que ha supervisado el nodo FileInput que ya ha establecido. Esta acción asegura que los archivos se han entregado al intermediario dentro del tiempo de espera del proceso por lotes del nodo Collector.

Si encuentra cualquier tipo de problema al ejecutar el ejemplo, consulte Resolución de problemas cuando se ejecutan ejemplos en la documentación de WebSphere Message Broker y consulte la sección "Determinación de problemas" más adelante en este tema.

Cuando haya terminado de configurar el ejemplo, el nodo FileInput, fileinput, supervisa el directorio para ver los detalles de la entrega para los pedidos de cliente 111 y 222.

Nota: Según la rapidez con que se sometan los pedidos de cliente, la entrada de los dos pedidos puede hacer que el flujo genere un solo mensaje de salida de la factura procesada por lotes que contenga dos pedidos, o un pedido puede llegar a su propio proceso por lotes y, por lo tanto, se generarán dos mensajes de salida de facturas.

Para ejecutar el ejemplo para los pedidos de cliente 111 y 222, los mensajes con la siguiente información deben colocarse en las colas de WebSphere MQ adecuadas:

Debe colocar el archivo del pedido con el número de cliente en el directorio que ha creado cuando configuró el ejemplo.

Para ejecutar el ejemplo para los pedidos de cliente 111 y 222:

  1. Debe guardar el contenido de 111.order y 222.order en el directorio que se ha creado en las instrucciones de configuración, consulte Configuración del ejemplo Nodo Collector. Guarde los archivos como 111.order y 222.order. Este directorio, con los dos archivos de pedidos, lo supervisa el nodo FileInput, fileinput. Esta acción ofrece detalles de pedido para el flujo como un archivo y determina el número de cliente a partir del nombre del archivo.

    Nota: si se está ejecutando el flujo de mensajes, se leerán los archivos 111.order y 222.order y, a continuación, casi inmediatamente después se eliminarán y, por lo tanto, los archivos ya no estarán visibles.

  2. Abra el archivo CollectorNodeSampleFlowProject/CollectorNodeSample_111_222_orders.mbtest. Este archivo contiene una invocación (Invoke) y tres peticiones de colocación en cola (Enqueues), que por orden, envían los mensajes de costes y empaquetado de WebSphere MQ para los pedidos 111 y 222. El número de cliente se identifica en el campo CustomerNumber de los mensajes.
  3. Seleccione Invocar, pulse Enviar mensaje y envíe el coste del pedido 111 a la cola COLL_IN1.
    <Costing>
      <CustomerNumber>111</CustomerNumber>
      <Product>Toaster</Product>
      <UnitPrice>4.99</UnitPrice>
    </Costing>
    
    Esta acción también inicia el escucha de mensajes WebSphere MQ del Cliente de prueba que se ha configurado para continuar escuchando mensajes en todas las colas de salida y de caducidad durante 5 minutos. Cuando se han procesado todos los mensajes, para finalizar el escucha, pulse Detener (el botón cuadrado azul en la barra de herramientas de sucesos de prueba de flujo de mensajes) cuando lo desee.
  4. Seleccione la primera aparición de Colocar en cola, pulse enviar mensaje para enviar el mensaje de empaquetado para el pedido 111 a la cola COLL_IN3.
    <Packaging>
      <CustomerNumber>111</CustomerNumber>
      <Postage>1.95</Postage>
    </Packaging>
    
  5. Seleccione la segunda aparición de Colocar en cola, pulse Enviar mensaje para enviar el mensaje de coste para el pedido 222 a la cola COLL_IN1.
    <Costing>
       <CustomerNumber>222</CustomerNumber>
       <Product>Food Processor</Product>
       <UnitPrice>35.99</UnitPrice>
    </Costing>
    
  6. Seleccione la tercera aparición de Colocar en cola, pulse Enviar mensaje para enviar el mensaje de empaquetado del pedido 222 a la cola COLL_IN3.
    <Packaging>
      <CustomerNumber>222</CustomerNumber>
      <Postage>5.55</Postage>
    </Packaging>
    
  7. El primer nodo Collector, CollectByCustNum, recopila el correspondiente mensaje de costes de COLL_IN1, el archivo Order de fileinput y el mensaje de empaquetado de COLL_IN3 y propaga la colección para habilitar el ESQL en el nodo Compute1 para generar un mensaje de factura que se propagará al segundo nodo Collector CollectUntilTrigger. Esta acción también se produce para los mensajes del pedido 222.
  8. Después de cada intervalo de 90 segundos, el nodo TimeoutNotification, TimerTrigger, desencadena el segundo nodo Collector, CollectUntilTrigger, que propaga los mensajes de facturación que se han recopilado en un mensaje por lotes de facturas durante cada período de tiempo de espera de recopilación de 30 segundos.
  9. Cuando se propaga el segundo nodo Collector, CollectUntilTrigger, los escuchas de WebSphere MQ del cliente de pruebas,que se han iniciado como resultado de la acción de invocación, detectan el mensaje de salida resultante y se visualiza el mensaje recibido en la cola COLL_OUT. Normalmente, los dos pedidos se generan en un mensaje por lotes individual similar al mensaje siguiente:
    <Invoices>
      <Invoice>
       <InvoiceNumber>111</InvoiceNumber>
       <Product>Toaster</Product>
       <TotalCost>6.94</TotalCost>
       <Delivery>2 days</Delivery>
      </Invoice>
      <Invoice>
       <InvoiceNumber>222</InvoiceNumber>
       <Product>Food Processor</Product>
       <TotalCost>77.53</TotalCost>
       <Delivery>4 days</Delivery>
      </Invoice>
      <Date>2009-10-16</Date>
      <Time>19:24:34</Time>
    </Invoices>
    
    Sin embargo, como el nodo Collector se desencadena cada 90 segundos, es posible que no haya colocado en cola los mensajes en un intervalo individual, por lo tanto, puede que no reciba dos mensajes de facturas independientes, uno para la factura 111 y otro para la factura 222.

Ejecutar el ejemplo para enviar el pedido de cliente 333

  1. Guarde el contenido de 333.order en el directorio que ha creado en Instrucciones de configuración. Por ejemplo:

    Nota: si está ejecutando el flujo de mensajes, se leerá el archivo 333.order y, a continuación, casi inmediatamente después, se eliminará y, por tanto, el archivo dejará de estar visible.

  2. Abra el archivo CollectorNodeSampleFlowProject/CollectorNodeSample_333_orders.mbtest. Este archivo contiene una invocación (Invoke) y tres peticiones de colocación en cola (Enqueue) que, por orden, envían los mensajes de coste y empaquetado de WebSphere MQ para el pedido 333.
  3. Seleccione Invocar, pulse Enviar mensaje y envíe el coste del pedido 333 a la cola COLL_IN1.
    <Costing>
      <CustomerNumber>333</CustomerNumber>
      <Product>Kettle</Product>
      <UnitPrice>5.99</UnitPrice>
    </Costing>
    
    Esta acción también inicia el escucha de mensajes WebSphere MQ del Cliente de prueba que se ha configurado para que escuche mensajes en todas las colas de salida o de caducidad durante 5 minutos. Cuando se han procesado todos los mensajes, para finalizar el escucha, pulse Detener (el botón cuadrado azul en la barra de herramientas de sucesos de prueba de flujo de mensajes) cuando lo desee.
  4. Seleccione Colocar en cola, pulse Enviar mensaje para enviar el mensaje de empaquetado para el pedido 333 a la cola COLL_IN3.
    <Packaging>
      <CustomerNumber>333</CustomerNumber>
      <Postage>2.05</Postage>
    </Packaging>
    
  5. Guarde el archivo 333.order en el directorio que ha creado en las instrucciones de configuración.
  6. Se procesan los mensajes y el archivo, y después del proceso por lotes, el escucha del Cliente de pruebas, que se está ejecutando como resultado de la acción de invocación, recibe y visualiza un lote de facturas de salida que contienen la factura 333.
    <Invoices>
      <Invoice>
        <InvoiceNumber>333</InvoiceNumber>
        <Product>Kettle</Product>
        <TotalCost>8.04</TotalCost>
        <Delivery>2 days</Delivery>
      </Invoice>
      <Date>2009-10-16</Date>
      <Time>19:28:03</Time>
    </Invoices>
    

La salida de los tres pedidos

El mensaje de salida en CollectorNodeSample_111_222_orders.mbtest contiene las facturas para los pedidos de cliente 111 y 222. Los mensajes de salida tienen el siguiente formato:

<Invoices>
  <Invoice>
     <InvoiceNumber>111</InvoiceNumber>
      <Product>Tostadora</Product>
     
<NumberOrdered>1</NumberOrdered>
      <TotalCost>8,94</TotalCost>
      <Delivery>2
días</Deliver>     
 </Invoice>
  <Invoice>
     <InvoiceNumber>222</InvoiceNumber>
      <Product>Robot
de cocina</Product>
     
<NumberOrdered>2</NumberOrdered>
      <TotalCost>75,93</TotalCost>
      <Delivery>4
días</Deliver>     
 </Invoice>
 <Date>2007-08-10</Date>
 <Time>17:18:22</Time>
</Invoices> 

El mensaje de salida muestra cómo el primer nodo Collector, CollectByCustNum, ha organizado los pedidos de cliente 111 y 222 para crear dos colecciones de mensajes. Cada colección se ha propagado al primer nodo Compute, donde los datos de la colección de cada pedido se combinan para crear una factura. El nodo Compute propaga dos mensajes, uno para cada pedido de cliente. Cuando estos mensajes llegan al segundo nodo Collector, CollectUntilTrigger, se completa una colección de mensajes cada 15 segundos, por lo que estos dos mensajes se añaden a la misma colección.

El mensaje de salida en CollectorNodeSample_333_orders.mbtest contiene la factura para el pedido de cliente 333.

<Invoices>
  <Invoice>
     <InvoiceNumber>333</InvoiceNumber>
      <Product>Hervidor</Product>
     
<NumberOrdered>1</NumberOrdered>
      <TotalCost>9,94</TotalCost>
      <Delivery>2
días</Deliver>     
 </Invoice>
   <Date>2007-08-10</Date>
 <Time>17:18:22</Time>
</Invoices> 

El primer nodo Collector, CollectByCustNum, organiza el pedido de cliente 333 para crear una colección. Esta colección se propaga luego al primer nodo Compute, donde los datos de la colección del pedido se combinan para crear una factura. Este mensaje se propaga luego al segundo nodo Collector, CollectUntilTrigger. Este nodo completa una colección cada 15 segundos, por lo que este pedido llega después de que se complete la colección que contiene los pedidos 111 y 222 y se añade a una nueva colección.

La colección completada que contiene los pedidos 111 y 222, y la colección completada que contiene el pedido 333 se retienen ambas en el nodo Collector CollectUntilTrigger hasta que ha transcurrido el intervalo de tiempo del nodo TimeoutNotification. Una vez transcurrido el tiempo de espera, después de 300 segundos, todas las colecciones completadas se propagan al último nodo Compute. En este nodo Compute se generan los dos mensajes siguientes:

Ambos mensajes contienen la misma información de indicación de fecha y hora porque se propagan al último nodo Compute al mismo tiempo, es decir, cuando ha transcurrido el intervalo de tiempo de espera.

Nota: puede recibir el mensaje de factura de salida para el pedido de cliente 333 en CollectorNodeSample_111_222_orders.mbtest y viceversa, porque ambos mensajes se propagan desde el nodo Collector a la vez y pueden llegar a la cola de salida COLL_OUT en cualquier orden.

Archivos de rastreo generados por los nodos de rastreo en el flujo

Se incluyen tres nodos Trace en el flujo de mensajes CollectorNodeSample. Los dos nodos están situados después de un nodo Collector para mostrar el árbol de mensaje que el nodo Collector crea para cada colección de mensajes. El nodo de rastreo Trace1 está situado después del nodo Collector CollectByCustNum y el nodo de rastreo Trace2 está situado después del nodo Collector CollectUntilTrigger. El tercer nodo Trace está situado después del nodo TimeoutNotification TimerTrigger y registra los desencadenantes del nodo TimeoutNotification.

Todos los nodos de rastreo se graban en el mismo archivo, collectorNodeSample.trc, e incluye el texto de grabación que define de donde procede la salida e incluye una indicación de la fecha y hora. Este escenario le permite controlar este archivo de rastreo para observar los sucesos secuenciales mientras se forman y se propagan las marcas de referencia de temporizador y las recopilaciones.

Puede encontrar el archivo de rastreo collectorNodeSample.trc en las ubicaciones siguientes:

Los enlaces siguientes a salidas de rastreos muestran ejemplos de salidas de dos de los nodos Trace. El comienzo de cada colección de mensajes está resaltado en azul, y el comienzo del subárbol para cada terminal de entrada y los datos del mensaje de cada terminal Input (de entrada) están resaltados en rojo.

Determinación de problemas

Si se envían mensajes a la cola COLL_EXPIRE1, la colección de mensajes no se completó antes de que finalizara el tiempo de espera del nodo Collector CollectByCustNum. Una razón puede ser que una de las entradas de los dos nodos MQInput o del nodo FileInput no se recibieran antes de que caducase la colección. El tiempo de caducidad del nodo CollectByCustNum se establece en 300 segundos. Si ha recibido un mensaje en la cola COLL_EXPIRE1, intente ejecutar el ejemplo de nuevo y coloque el archivo y los mensajes de WebSphere MQ dentro de un tiempo de espera de 300 segundos.

Si su suceso de invocación excede el tiempo de espera sin recibir ningún mensaje y no tiene mensajes en COLL_EXPIRE1, es posible colocar un mensaje en COLL_OUT una vez el Cliente de prueba haya dejado de estar a la espera. Compruebe la profundidad de cola con WebSphere MQ Explorer. Debe ampliar el tiempo de espera del Cliente de prueba respecto a su valor predeterminado, de 120 segundos a 300 segundos tal como indican las instrucciones de configuración. En función de lo rápido que lleve a cabo los pasos 1 a 6, puede tardar más de 2 minutos en que se genere el mensaje.

Volver a la página inicial del ejemplo