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

Criando uma Coleção de Mensagens Usando Java

É possível construir uma coleção de mensagens usando Java™ e a classe MbMessageCollection. O uso de uma coleção de mensagens será útil se for necessário agrupar mensagens para análise ou construir a coleção de mensagens para representar uma determinada estrutura de dados, como uma de canal do CICS Transaction Server para z/OS.

Antes de começar:

Coleção de mensagens é uma mensagem que consiste em um cabeçalho de Propriedades e um elemento de domínio único chamado Coleção. A pasta Coleção contém várias mensagens filhas, cada uma podendo conter uma pasta de Propriedades, vários cabeçalhos (como MQMD) e um corpo. Uma coleção de mensagens pode ter também zero ou mais atributos que são pares nome/valor. O nome de um atributo deve ser exclusivo em uma coleção de mensagens. Um atributo padrão para a coleta de mensagens é um atributo chamado CollectionName.

A figura a seguir mostra o exemplo de uma estrutura de coleção de mensagens.

Este é um diagrama da árvore para uma coleta de mensagens. Seu conteúdo está descrito no texto circundante.

É possível criar uma coleção de mensagens usando Java e a classe MbMessageCollection, para agrupar mensagens para análise, ou criar uma coleção de mensagens que deve ser construída para representar uma estrutura de dados específica, como uma estrutura de dados de canal do CICS.

Para configurar uma coleção de mensagens usando Java, conclua as etapas a seguir:

  1. Crie uma nova mensagem usando o seguinte exemplo:
    // criar nova mensagem
    MbMessageCollection outMessage = new MbMessageCollection();
    MbMessageAssembly outAssembly = new MbMessageAssembly(inAssembly,outMessage);
  2. Crie uma pasta de Propriedades para a coleção usando o seguinte exemplo:
    // criar pasta de Propriedades e dados de nível superior
    MbElement omroot = outMessage.getRootElement();
    MbElement properties = omroot.createElementAsFirstChild("Properties");
    MbElement property1 = properties.createElementAsLastChild(
    	MbElement.TYPE_NAME_VALUE, "myProperty1", "propertyData1");
    MbElement property2 = properties.createElementAsLastChild(
    	MbElement.TYPE_NAME_VALUE, "myProperty2", "propertyData2");
  3. Crie os pares de nome/valor usando o seguinte exemplo:
    // criar atributos de coleção (pares nome/valor)
    MbElement cn  = outMessage.createNameValue("CollectionName", "myCollectionName");
    MbElement nv1 = outMessage.createNameValue("NAME1", "Value1");
    MbElement nv2 = outMessage.createNameValue("NAME2", 12345);

    Assim como com pastas de mensagens, o elemento de domínio é sempre o último filho da propriedade de mensagem.

  4. O seguinte exemplo mostra o procedimento para criar uma mensagem na coleção. As etapas um, dois e três são repetidas.
    public void evaluate(MbMessageAssembly inAssembly) throws MbException {
    	MbOutputTerminal out = getOutputTerminal("out");
    
    	// criar nova mensagem
    	MbMessageCollection outMessage = new MbMessageCollection();
    	MbMessageAssembly outAssembly = new MbMessageAssembly(inAssembly, outMessage);
    
    	// criar pasta de Propriedades e dados de nível superior
    	MbElement omroot = outMessage.getRootElement();
    	MbElement properties = omroot.createElementAsFirstChild("Properties");
    	MbElement property1 = properties.createElementAsLastChild(
    		MbElement.TYPE_NAME_VALUE, "myProperty1", "propertyData1");
    	MbElement property2 = properties.createElementAsLastChild(
    		MbElement.TYPE_NAME_VALUE, "myProperty2", "propertyData2");
    
    	// criar atributos de coleção (pares nome/valor)
    	MbElement cn  = outMessage.createNameValue("CollectionName", "myCollectionName");
    	MbElement nv1 = outMessage.createNameValue("NAME1", "Value1");
    	MbElement nv2 = outMessage.createNameValue("NAME2", 12345);
    
    	// criar pasta 1
    	MbElement folder1 = outMessage.createFolder("folder1");
    
    	// criar propriedades para pasta 1
    	MbElement folder1properties = folder1.createElementAsFirstChild("Properties");
    	MbElement folder1property1 = folder1properties.createElementAsLastChild(
    		MbElement.TYPE_NAME_VALUE, "myFolder1Property1", "folder1propertyData1");
    	MbElement folder1property2 = folder1properties.createElementAsLastChild(
    		MbElement.TYPE_NAME_VALUE, "myFolder1Property2", "folder1propertyData2");
    
    	// criar corpo da pasta 1
    	MbElement mrm = folder1.createElementAsLastChild("MRM");
    
    	// criar elemento de domínio de mensagem da pasta 1
    	MbElement msg = mrm.createElementAsLastChild(MbElement.TYPE_NAME,
    		"msg", null);
    
    	// criar dados no corpo da mensagem da pasta 1
    	MbElement data = msg.createElementAsLastChild(
    		MbElement.TYPE_NAME_VALUE, "data", "myData");
    
    	// criar pasta 2
    	MbElement folder2 = outMessage.createFolder("Folder2");
    
    	// criar propriedades para pasta 2
    	MbElement folder2properties = folder2.createElementAsFirstChild("Properties");
    	MbElement folder2property1 = folder2properties.createElementAsLastChild(
    		MbElement.TYPE_NAME_VALUE, "myFolder2Property1", "folder2propertyData1");
    	MbElement folder2property2 = folder2properties.createElementAsLastChild(
    		MbElement.TYPE_NAME_VALUE, "myFolder2Property2", "folder2propertyData2");
    
    	// criar corpo da pasta 2
    	MbElement xmlnsc = folder2.createElementAsLastChild("XMLNSC");
    
    	// criar elemento de domínio de mensagem da pasta 2
    	MbElement msg2 = xmlnsc.createElementAsLastChild(
    		MbElement.TYPE_NAME, "msg2", null);
    
    	// criar dados no corpo da mensagem da pasta 2
    	MbElement data2 = msg2.createElementAsLastChild(
    		MbElement.TYPE_NAME_VALUE, "myData2", "myXMLData");
    
    	try {
    		out.propagate(outAssembly);
    	} finally {
    		// limpar a outMessage mesmo que haja uma exceção
    		outMessage.clearMessage();
    	}
    }
A saída de exemplo a seguir de um nó Trace mostra a estrutura da mensagem construída por esse código Java:
TraceOutput:  Root ( ['MQROOT' : 0xee3a90]
	(0x01000000:Name):Properties = ( ['MQPROPERTYPARSER' : 0xae4370]
		(0x03000000:NameValue):myProperty1 = 'propertyData1' (CHARACTER)
		(0x03000000:NameValue):myProperty2 = 'propertyData2' (CHARACTER)
	)
	(0x01000000:Name):Collection = ( ['COLLECTION' : 0x58d0b08]
		(0x03000000:NameValue):CollectionName = 'myCollectionName' (CHARACTER)
		(0x03000000:NameValue):NAME1          = 'Value1' (CHARACTER)
		(0x03000000:NameValue):NAME2          = 12345 (INTEGER)
		(0x01000000:Name     ):Folder1     = ( ['COLLECTIONFOLDER' : 0xee42e8]
			(0x01000000:Name ):Properties = ( ['MQPROPERTYPARSER' : 0xae39e8]
				(0x03000000:NameValue):myFolder1Property1 = 'folder1propertyData1' (CHARACTER)
				(0x03000000:NameValue):myFolder1Property2 = 'folder1propertyData2' (CHARACTER)
			)
			(0x01000021:Name+):MRM        = ( ['mrm' : 0xdce588]
				(0x01000000:Name):msg = (
					(0x03000000:NameValue):data = 'myData' (CHARACTER)
				)
			)
		)
		(0x01000000:Name     ):Folder2     = ( ['COLLECTIONFOLDER' : 0xee3d58]
			(0x01000000:Name  ):Properties = ( ['MQPROPERTYPARSER' : 0xae4cf8]
				(0x03000000:NameValue):myFolder2Property1 = 'folder2propertyData1' (CHARACTER)
				(0x03000000:NameValue):myFolder2Property2 = 'folder2propertyData2' (CHARACTER)
			)
			(0x01000000:Folder):XMLNSC     = ( ['xmlnsc' : 0xee2188]
				(0x01000000:Folder):msg2 = (
					(0x03000000:PCDataField):myData2 = 'myXMLData' (CHARACTER)
				)
			)
		)
	)
)
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:30:43


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