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.
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;
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.