Métodos de publicación/suscripción de WebSphere MQ Everyplace

Los nodos de WebSphere MQ Everyplace dan soporte a un subconjunto limitado de las prestaciones de publicación/suscripción del WebSphere Business Integration Event Broker.

Publicar

Como ocurre con todos los mensajes destinados a una cola puente que se dirigen al WebSphere Business Integration Event Broker, debe especificarse un tipo de mensaje. Para un mensaje de publicación, éste es MQeMbMsgObject.TYPE_PUB.

Los nombres de campos disponibles son los siguientes:

MQeMbMsgObject.TOPIC
Contiene una serie del tema individual al que publicar. Este atributo es obligatorio.
MQeMbMsgObject.RETAINED
Contiene un valor booleano. Si se establece en true, se retiene la publicación y, en consecuencia, los clientes no suscritos que se suscriben recibirán el último valor publicado para el tema dado. Este atributo es opcional. Si no se especifica esto, el valor por omisión es false (no retenida).
MQeMbMsgObject.MQ_Persistence
Contiene un valor entero que contiene el valor de permanencia del mensaje. El valor '0' representa un mensaje no permanente. El valor '1' representa un mensaje permanente.
MQeMbMsgObject.MESSAGE
Contiene una matriz de bytes que representan la carga útil del mensaje. Este campo es obligatorio.
A continuación se muestra un ejemplo del código:
try
{
   System.out.println("Local QM Name: " + myQM.getName());

   MQeMsgObject mqeMsg = new MQeMsgObject();
   mqeMsg.putInt(MQeMbMsgObject.TYPE_OF_MSG, MQeMbMsgObject.TYPE_PUB);
   mqeMsg.putAscii(MQeMbMsgObject.TOPIC, "Weather");
   mqeMsg.putArrayOfByte(MQeMbMsgObject.MESSAGE, asciiToByte("Hello");
   mqeMsg.putBoolean(MQeMbMsgObject.RETAINED, true);

   System.out.println("..Put message to QM/queue: " + destQueueManager +
                      "/" + destBridgeQueue);
   myQM.putMessage(destQueueManager, destBridgeQueue, mqeMsg, null, 0);
   System.out.println("Finished");
}
catch (Exception e)
{
   e.printStackTrace();
   System.out.println("Failed! " + e);
}

Suscribir

El tipo de mensaje que debe especificarse para un mensaje de suscripción es MQeMbMsgObject.TYPE_SUB. Los nombres de campos disponibles son los siguientes:

MQeMbMsgObject.TOPIC
Contiene una matriz de series que incluyen los temas a los que se debe suscribir.
MQeMbMsgObject.MQ_DestQueueMgr
Es un gestor de colas de WebSphere MQ Everyplace que se devuelve al que se envían todos los mensajes publicados.
MQeMbMsgObject.MQ_DestQueueName
Es un nombre de colas de WebSphere MQ Everyplace que se devuelve al que se envían todos los mensajes publicados.
A continuación se muestra un ejemplo del código:
try {	
   System.out.println("Local QM Name: " + myQM.getName());

   MQeMsgObject mqeMsg = new MQeMsgObject();
   mqeMsg.putInt(MQeMbMsgObject.TYPE_OF_MSG, MQeArgoLaunch.TYPE_SUB);
   mqeMsg.putAsciiArray(MQeMbMsgObject.TOPIC, new String[]
                         {"Topic1", "Topic2", "Topic3"});
   mqeMsg.putAscii(MQeMbMsgObject.MQ_DestQueueName, "Inbox");
   mqeMsg.putAscii(MQeMbMsgObject.MQ_DestQueueMgr, "ServerQM1");

   System.out.println("..Put message to QM/queue: " + destQueueManager +
                      "/" + destBridgeQueue);
   myQM.putMessage(destQueueManager, destBridgeQueue, mqeMsg, null, 0);
   System.out.println("Finished");
}
catch (Exception e)
{
   e.printStackTrace();
   System.out.println("Failed! " + e);
}

Anular la suscripción

El tipo de mensaje que debe especificarse para un mensaje de anulación de suscripción es MQeMbMsgObject.TYPE_UNSUB. Los nombres de campos disponibles son los siguientes:

MQeMbMsgObject.TOPIC
Contiene una matriz de series que incluyen los temas de los que se debe anular la suscripción.
MQeMbMsgObject.MQ_DestQueueMgr
Es un gestor de colas de WebSphere MQ Everyplace que se devuelve al que se envían todos los mensajes publicados.
MQeMbMsgObject.MQ_DestQueueName
Es un nombre de colas de WebSphere MQ Everyplace que se devuelve al que se envían todos los mensajes publicados.
A continuación se muestra un ejemplo del código:
try {	
   System.out.println("Local QM Name: " + myQM.getName());
   MQeMsgObject mqeMsg = new MQeMsgObject();
   mqeMsg.putInt(MQeMbMsgObject.TYPE_OF_MSG, MQeArgoLaunch.TYPE_UNSUB);
   mqeMsg.putAsciiArray(MQeMbMsgObject.TOPIC, new String[]
                         {"Topic1", "Topic2", "Topic3"});
   mqeMsg.putAscii(MQeMbMsgObject.MQ_DestQueueName, "Inbox");
   mqeMsg.putAscii(MQeMbMsgObject.MQ_DestQueueMgr, "ServerQM1");

   System.out.println("..Put message to QM/queue: " + destQueueManager
                      + "/" + destBridgeQueue);
   myQM.putMessage(destQueueManager, destBridgeQueue, mqeMsg, null, 0 );
   System.out.println("Finished");
}
catch (Exception e)
{
   e.printStackTrace();
   System.out.println("Failed! " + e);
}
WebSphere MQ Everyplace actualmente no da soporte a ninguna de las características adicionales no descritas aquí. No se da soporta a mensajes soportados en WebSphere MQ, como por ejemplo solicitar actualización.

Conceptos relacionados
WebSphere MQ Mobile Transport
Mensajes de WebSphere MQ Everyplace

Referencia relacionada
WebSphere MQ Mobile Transport
Métodos de punta a punta de WebSphere MQ Everyplace