Der MQOutput-Knoten kann mehrere Nachrichten senden, die eine WebSphere MQ-Nachrichtengruppierung bilden. Konfigurieren Sie einen Compute- oder JavaCompute-Knoten, um in den MQMD-Feldern Nachrichtengruppierungsoptionen anzugeben.
DECLARE MSGNUM INT 0;
DECLARE MSGTOTAL INT 5;
WHILE MSGNUM < MSGTOTAL DO
SET MSGNUM = MSGNUM + 1;
CALL CopyMessageHeaders();
-- Manually set the groupId since we cant ask the queue manager to generate one.
-- the UUIDASBLOB function could be used here to generate one, but this must be done
-- outside the loop to keep the same groupId throughout!
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);
}
}
}
Wenn der Nachrichtenfluss mehrere Nachrichten aus einer Eingabenachricht sendet, kann er einen GroupId-Wert erstellen, den MsgSeqNumber-Wert erhöhen und das Feld MsgFlags festlegen. Mit diesen Beispielen für ESQL- und Java-Code wird gezeigt, wie Sie diese Werte festlegen können. Wenn der Nachrichtenfluss jedoch mehrere Nachrichten aus mehr als einer Eingabenachricht sendet, muss er die GroupId- und MsgSeqNumber-Werte zwischen den Nachrichtenflussinstanzen speichern; dies ist durch die Nutzung gemeinsamer Variablen möglich.
Weitere Informationen zur Nachrichtengruppierung finden Sie im Abschnitt Application Programming Guide im WebSphere MQ Version 7 Information Center online. Weitere Informationen zu den WebSphere MQ-Feldern, die in der Nachrichtengruppierung wichtig sind, finden Sie im Abschnitt Application Programming Reference im WebSphere MQ Version 7 Information Center online.