WebSphere Message Broker, Versión 8.0.0.5 Sistemas operativos: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Consulte la información sobre la última versión del producto en IBM Integration Bus, Versión 9.0

Crear una colección de mensajes utilizando Java

Se puede construir una colección de mensajes utilizando Java™ y la clase MbMessageCollection. Utilizar una colección de mensajes es útil si los mensajes deben agruparse para analizar, o si la colección de mensajes se deben construir para representar una estructura de datos en particular, como un canal de datos estructura de CICS Transaction Server for z/OS.

Antes de empezar:

Una colección de mensajes es un mensaje que consta de una cabecera Propiedades y un elemento de dominio único denominado Colección. La carpeta Colección contiene un número de mensajes hijo, cada uno de los cuales puede contener un carpeta Propiedades, un número de cabeceras (por ejemplo MQMD) y un cuerpo. Una colección de mensajes también puede tener cero o más atributos de tipo par nombre/valor. El nombre de un atributo debe ser único dentro de una colección de mensajes. Un atributo estándar para la colección de mensajes es un atributo denominado CollectionName.

En la siguiente ilustración se muestra un ejemplo de una estructura de colección de mensajes.

Este es un diagrama del árbol de una colección de mensajes. El contenido se describe en el texto que lo acompaña.

Puede crear una colección de mensajes utilizando Java, y la clase MbMessageCollection, para agrupar mensajes para análisis, o crear una colección de mensajes que deben construirse para representar una estructura de datos en particular, como una estructura de datos de canal CICS.

Para configurar una colección de mensajes utilizando Java, realice los pasos siguientes:

  1. Cree un mensajes nuevo utilizando el ejemplo siguiente:
    // crear nuevo mensaje
    MbMessageCollection outMessage = new MbMessageCollection();
    MbMessageAssembly outAssembly = new MbMessageAssembly(inAssembly,
    	outMessage);
  2. Cree una carpeta Propiedades para la colección utilizando el siguiente ejemplo:
    // crear carpeta de Propiedades y datos
    de alto nivel
    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. Cree los pares de valores de nombres utilizando el siguiente ejemplo:
    // crear atributos de la colección
    (pares de nombres/valores)
    MbElement cn  = outMessage.createNameValue("CollectionName", "myCollectionName");
    MbElement nv1 = outMessage.createNameValue("NAME1", "Value1");
    MbElement nv2 = outMessage.createNameValue("NAME2", 12345);

    Como con las carpetas de mensajes, el elemento de dominio es siempre el último hijo de la propiedad de mensaje.

  4. El ejemplo siguiente muestra el procedimiento para crear un mensaje dentro de la colección. Los pasos uno, dos y tres se repiten.
    public void evaluate(MbMessageAssembly inAssembly) throws MbException {
    	MbOutputTerminal out = getOutputTerminal("out");
    
    	// crear nuevo mensaje
    	MbMessageCollection outMessage = new MbMessageCollection();
    	MbMessageAssembly outAssembly = new MbMessageAssembly(inAssembly,
    		outMessage);
    
    	// crear carpeta de Propiedades y datos de alto
    nivel
    	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");
    
    	// crear atributos de la colección (pares de
    nombres/valores)
    	MbElement cn  = outMessage.createNameValue("CollectionName", "myCollectionName");
    	MbElement nv1 = outMessage.createNameValue("NAME1", "Value1");
    	MbElement nv2 = outMessage.createNameValue("NAME2", 12345);
    
    	// crear carpeta 1
    	MbElement folder1 = outMessage.createFolder("folder1");
    
    	// crear propiedades para carpeta 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");
    
    	// crear cuerpo de carpeta 1
    	MbElement mrm = folder1.createElementAsLastChild("MRM");
    
    	// crear elemento del dominio de mensajes de
    carpeta 1
    	MbElement msg = mrm.createElementAsLastChild(MbElement.TYPE_NAME,
    		"msg", null);
    
    	// crear datos dentro del cuerpo del mensaje
    para la carpeta 1
    	MbElement data = msg.createElementAsLastChild(
    		MbElement.TYPE_NAME_VALUE, "data", "myData");
    
    	// crear carpeta 2
    	MbElement folder2 = outMessage.createFolder("Folder2");
    
    	// crear propiedades para carpeta 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");
    
    	// crear cuerpo de carpeta 2
    	MbElement xmlnsc = folder2.createElementAsLastChild("XMLNSC");
    
    	// crear elemento del dominio de mensajes de la
    carpeta 2
    	MbElement msg2 = xmlnsc.createElementAsLastChild(
    		MbElement.TYPE_NAME, "msg2", null);
    
    	// crear datos dentro del cuerpo del mensaje
    para la carpeta 2
    	MbElement data2 = msg2.createElementAsLastChild(
    		MbElement.TYPE_NAME_VALUE, "myData2", "myXMLData");
    
    	try {
    		out.propagate(outAssembly);
    	} finally {
    		// borrar el outMessage aún si hay una
    excepción
    		outMessage.clearMessage();
    	}
    }
El ejemplo de salida siguiente de un nodo Trace muestra la estructura de mensaje construida por este 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 | Descargas | Biblioteca | Soporte | Comentarios

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

        
        Última actualización:
        
        Última actualización: 2015-02-28 17:00:44


Tema de tareaTema de tarea | Versión 8.0.0.5 | bc16080_