O nó MQOutput pode enviar múltiplas m ensagens que formand um grupo de mensagens WebSphere MQ. Configure um nó Compute ou JavaCompute para configurar os campos MQMD para especificar as opções do grupo de mensagens.
DECLARE MSGNUM INT 0;
DECLARE MSGTOTAL INT 5;
WHILE MSGNUM < MSGTOTAL DO
SET MSGNUM = MSGNUM + 1;
CALL CopyMessageHeaders();
-- Configure manualmente o groupId porque não podemos solicitar que o gerenciador de filas gere um.
-- a função UUIDASBLOB não pôde ser utilizada aqui para gerar um, mas isto deve ser feito
-- fora do loop para manter o mesmo groupId completo!
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);
}
}
}
Se o fluxo de mensagens estiver enviando múltiplas mensagens de uma mensagem de entrada, ele pode criar um valor GroupId, incrementar o valor MsgSeqNumber e configurar o campo MsgFlags. Os exemplos do código ESQL e Java mostram como é possível configurar esses valores. Entretanto, se o fluxo de mensagens estiver enviando múltiplas mensagens de mais de uma mensagem de entrada, ele deverá armazenar os valores GroupId e MsgSeqNumber entre as instâncias de fluxo, o que é atingido usando variáveis compartilhadas.
Para obter mais informações sobre o agrupamento de mensagens, consulte o Guia de Programação do Aplicativo do Centro de Informações Online do WebSphere MQ Versão 7. Para obter mais informações sobre os campos do WebSphere MQ que são significativos no agrupamento de mensagens, consulte a Referência de Programação do Aplicativo do Centro de Informações Online do WebSphere MQ Versão 7.