WebSphere Message Broker, Versión 8.0.0.5 Sistemas operativos: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Consulte la información sobre la última versión del producto en IBM Integration Bus, Versión 9.0

Envío de mensajes en un grupo de mensajes WebSphere MQ

El nodo MQOutput puede enviar varios mensajes que forman un grupo de mensajes WebSphere MQ. Configure un nodo Compute o JavaCompute para establecer los campos MQMD con el fin de especificar opciones de grupo de mensajes.

El flujo de mensajes debe establecer los siguientes campos MQMD.
  • GroupId
  • MsgSeqNumber
  • MsgFlags
Puede utilizar el siguiente ejemplo de código ESQL en un nodo Compute, que muestra cómo establecer estos campos:
DECLARE MSGNUM INT 0;
  DECLARE MSGTOTAL INT 5;
  WHILE MSGNUM < MSGTOTAL DO
    SET MSGNUM = MSGNUM + 1;
    CALL CopyMessageHeaders();
    -- Establezca manualmente el GroupId ya que no se puede pedir al gestor de colas que lo genere.
    -- la función UUIDASBLOB se puede utilizar para generar uno pero se debe realizar
    -- fuera del bucle para que el GroupId sea siempre el mismo
    SET OutputRoot.MQMD.GroupId = X'000000000000000000000000000000000000000000000001';
    SET OutputRoot.MQMD.MsgSeqNumber = MSGNUM;
    SET OutputRoot.MQMD.MsgFlags = MQMF_MSG_IN_GROUP;
    IF (MSGNUM = MSGTOTAL) THEN
      SET OutputRoot.MQMD.MsgFlags = MQMF_LAST_MSG_IN_GROUP;
    END IF;
    SET OutputRoot.XML.TestCase = MSGNUM;
    PROPAGATE;
  END WHILE;
  RETURN FALSE;
Puede utilizar el siguiente ejemplo de código Java™ en un nodo JavaCompute, que muestra cómo establecer estos campos:
public class mq_group_java_JavaCompute extends MbJavaComputeNode {
      public void evaluate(MbMessageAssembly assembly) throws MbException {
        MbOutputTerminal out = getOutputTerminal("out");
        int MSGTOTAL = 5;
        for(int MSGNUM = 1 ; MSGNUM <= MSGTOTAL;MSGNUM++){
           MbMessage newMessage = new MbMessage();
           MbElement root = newMessage.getRootElement();
           MbElement mqmd = root.createElementAsFirstChild("MQMD");
           mqmd.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, 
           "GroupId", new byte[]{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1});
           mqmd.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "MsgSeqNumber", MSGNUM);
           if (MSGNUM == MSGTOTAL){
               mqmd.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, 
               "MsgFlags", 16); // MQMF_LAST_MSG_IN_GROUP 0x00000010
           }
           else{
               mqmd.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, 
               "MsgFlags", 8);  // MQMF_MSG_IN_GROUP      0x00000008
           }
           MbElement xmlnsc = root.createElementAsLastChild("XMLNSC");
           MbElement body = xmlnsc.createElementAsLastChild(MbElement.TYPE_NAME,"TestCase",null);
           body.setValue(MSGNUM);
           MbMessageAssembly newAssembly = new MbMessageAssembly(assembly,newMessage);
           out.propagate(newAssembly);
        }
    }
}

Si el flujo de mensajes envía varios mensajes desde un mensaje de entrada, puede crear un valor GroupId, incrementar el valor MsgSeqNumber y establecer el campo MsgFlags. Los ejemplos de código ESQL y Java muestran cómo se pueden establecer estos valores. Sin embargo, si el flujo de mensajes envía diversos mensajes desde más de un mensaje de entrada, deberá almacenar los valores de GroupId y MsgSeqNumber entre las instancias de flujos, lo cual se puede conseguir utilizando las variables compartidas.

Para obtener más información sobre la agrupación de mensajes, consulte la sección Application Programming Guide de Centro de información en línea de WebSphere MQ Versión 7. Para obtener más información sobre los campos de WebSphere MQ que son significativos en la agrupación de mensajes, consulte la sección Application Programming Reference de Centro de información en línea de WebSphere MQ Versión 7.

Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Comentarios

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        Última actualización:
        
        Última actualización: 2015-02-28 16:58:33


Tema de tareaTema de tarea | Versión 8.0.0.5 | ac25710_