WebSphere MQ Everyplace パブリッシュ/サブスクライブ・メソッド

WebSphere MQ Everyplace ノードは、WebSphere Business Integration Event Brokerパブリッシュ/サブスクライブ機能の限定サブセットをサポートしています。

パブリッシュ

WebSphere Business Integration Event Broker へ流れる、ブリッジ・キューにあてたすべてのメッセージについては、メッセージ・タイプを指定する必要があります。 パブリッシュ・メッセージの場合、これは MQeMbMsgObject.TYPE_PUB です。

利用できるフィールド名は、以下のとおりです。

MQeMbMsgObject.TOPIC
ここには、パブリッシュする先の単一トピックを示すストリングが含まれます。 この属性は必須です。
MQeMbMsgObject.RETAINED
ここには、Boolean の値が含まれます。 これが真に設定される場合、パブリケーションは保存されるため、 サブスクライブしようとするアンサブスクライブ状態のクライアントは、 指定されたトピックについて、最後にパブリッシュされた値を受信します。 この属性は任意指定です。 これを指定しない場合、デフォルト値は偽 (保存されない) です。
MQeMbMsgObject.MQ_Persistence
ここには、メッセージの持続値を含む整数値が含まれます。 '0' の値は、非持続メッセージを表します。 '1' の値は、持続メッセージを表します。
MQeMbMsgObject.MESSAGE
ここには、メッセージのペイロードを表すバイト配列が含まれます。 このフィールドは必須です。
次にコード例を示します。
    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);
}

サブスクライブ

サブスクリプション・メッセージに指定する必要のあるメッセージ・タイプは、 MQeMbMsgObject.TYPE_SUB です。 利用できるフィールド名は、以下のとおりです。

MQeMbMsgObject.TOPIC
ここには、サブスクライブ先のトピックを含むストリング配列が含まれます。
MQeMbMsgObject.MQ_DestQueueMgr
これは、パブリッシュしたメッセージの送信先であり、メッセージが戻される WebSphere MQ Everyplace キュー・マネージャー名です。
MQeMbMsgObject.MQ_DestQueueName
これは、パブリッシュしたメッセージの送信先であり、メッセージが戻される WebSphere MQ Everyplace キュー名です。
次にコード例を示します。
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);
}

アンサブスクライブ

アンサブスクライブ・メッセージに指定する必要のあるメッセージ・タイプは、 MQeMbMsgObject.TYPE_UNSUB です。 利用できるフィールド名は、以下のとおりです。

MQeMbMsgObject.TOPIC
ここには、アンサブスクライブするトピックを含むストリング配列が含まれます。
MQeMbMsgObject.MQ_DestQueueMgr
これは、パブリッシュしたメッセージの送信先であり、メッセージが戻される WebSphere MQ Everyplace キュー・マネージャー名です。
MQeMbMsgObject.MQ_DestQueueName
これは、パブリッシュしたメッセージの送信先であり、メッセージが戻される WebSphere MQ Everyplace キュー名です。
次にコード例を示します。
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 は今のところ、ここで説明されていない別の機能はサポートしていません。 Request Update など、WebSphere MQ でサポートされているメッセージはサポートされていません。

関連概念
WebSphere MQ Mobile Transport
WebSphere MQ Everyplace メッセージ

関連資料
WebSphere MQ Mobile Transport
WebSphere MQ Everyplace point-to-point メソッド