Métodos de Publicação/Assinatura do WebSphere MQ Everyplace

Os nós do WebSphere MQ Everyplace suportam um subconjunto limitado da capacidade de Publicação/Assinatura do WebSphere Business Integration Event Broker.

Publish

Como ocorre com todas as mensagens destinadas a uma fila de pontes que vão para o WebSphere Business Integration Event Broker, um tipo de mensagem deve ser especificado.Para uma mensagem de publicação, ele é MQeMbMsgObject.TYPE_PUB.

Os nomes de campos disponíveis são os seguintes:

MQeMbMsgObject.TOPIC
Contém uma cadeia com o único tópico em que ocorrerá a publicação. Esse atributo é mandatório.
MQeMbMsgObject.RETAINED
Contém um valor Boolean. Se estiver definido como true, a publicação ficará retida e, portanto, os clientes assinantes com assinatura cancelada receberão o último valor publicado para o tópico especificado. Esse atributo é opcional. Se não for especificado, o valor padrão será false (não retido).
MQeMbMsgObject.MQ_Persistence
Contém um valor inteiro contendo o valor de persistência da mensagem. O valor '0' representa uma mensagem não persistente. O valor '1' representa uma mensagem persistente.
MQeMbMsgObject.MESSAGE
Contém uma matriz de bytes que representa a carga útil da mensagem. Esse campo é mandatório.
Este é um exemplo de 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);
}

Assinar

O tipo de mensagem que deve ser especificado para uma mensagem de assinatura é MQeMbMsgObject.TYPE_SUB. Os nomes de campos disponíveis são os seguintes:

MQeMbMsgObject.TOPIC
Contém uma matriz de cadeias contendo tópicos nos quais ocorrerá a assinatura.
MQeMbMsgObject.MQ_DestQueueMgr
Esse é o nome do gerenciador de filas de retorno do WebSphere MQ Everyplace para o qual serão enviadas mensagens publicadas.
MQeMbMsgObject.MQ_DestQueueName
Esse é o nome da fila de retorno do WebSphere MQ Everyplace para a qual serão enviadas mensagens publicadas.
Este é um exemplo de 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);
}

Cancelar Assinatura

O tipo de mensagem que deve ser especificado para uma mensagem de cancelamento de assinatura é MQeMbMsgObject.TYPE_UNSUB. Os nomes de campos disponíveis são os seguintes:

MQeMbMsgObject.TOPIC
Contém uma matriz de cadeias contendo tópicos nos quais ocorrerá o cancelamento de assinatura.
MQeMbMsgObject.MQ_DestQueueMgr
Esse é o nome do gerenciador de filas de retorno do WebSphere MQ Everyplace para o qual serão enviadas mensagens publicadas.
MQeMbMsgObject.MQ_DestQueueName
Esse é o nome da fila de retorno do WebSphere MQ Everyplace para a qual serão enviadas mensagens publicadas.
Este é um exemplo de algum 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);
}
No momento, o WebSphere MQ Everyplace não suporta recursos adicionais não descritos aqui.As mensagens suportadas no WebSphere MQ, tais como, atualização de pedido, não são suportadas.

Conceitos relacionados
WebSphere MQ Mobile Transport
Mensagens do WebSphere MQ Everyplace

Referências relacionadas
WebSphere MQ Mobile Transport
Métodos Ponto-a-Ponto do WebSphere MQ Everyplace