WebSphere Message Broker, Versão 8.0.0.5 Sistemas operacionais: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Consulte as informações sobre a versão mais recente do produto em IBM Integration Bus, Versão 9.0

Enviando Mensagens em um Grupo de Mensagens do WebSphere MQ

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.

O fluxo de mensagens deve configurar os seguintes campos do MQMD:
  • GroupId
  • MsgSeqNumber
  • MsgFlags
É possível usar o seguinte exemplo do código ESQL em um nó Compute, que mostra como configurar esses valores:
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;
É possível usar o exemplo a seguir do código Java™ em um nóJavaCompute, que mostra como configurar esses 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);
        }
    }
}

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.

Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback

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

        
        Última atualização:
        
        Última atualização: 2015-02-28 18:28:31


Tópico de TarefaTópico de Tarefa | Versão 8.0.0.5 | ac25710_