構成マネージャー・プロキシー・サブスクリプション API

これは、構成マネージャー・プロキシー (CMP) アプリケーションの開発という、より大きなタスクの一部で、CMP の拡張機能の 1 つです。

CMP を使用して、ドメイン内のアクティブ・サブスクリプションのセットを表示したり、削除することができます。 以下の例は、ストリング "shares" で始まる名前を持つすべてのサブスクリプションの情報をトピックに対して示します。
import java.util.Enumeration;
import com.ibm.broker.config.proxy.*;

public class QuerySubscriptions {

  public static void main(String[] args) {

    ConfigManagerProxy cmp = null;
    try {
      ConfigManagerConnectionParameters cmcp =
         new MQConfigManagerConnectionParameters(
           "localhost",
           1414,
           "");
      cmp = ConfigManagerProxy.getInstance(cmcp);   
    } catch (ConfigManagerProxyException cmpex) {
      System.out.println("Error connecting: "+cmpex);
    }
        
    if (cmp != null) {
      System.out.println("Connected to Config Manager!");
      querySubscriptionsByTopic(cmp, "shares%");
      cmp.disconnect();
    }
  }

  private static void querySubscriptionsByTopic(
    ConfigManagerProxy cmp,
    String topic)
  {
    try {
      SubscriptionsProxy matchingSubscriptions =
        cmp.getSubscriptions(topic, // filter by topic
                             null, // don't filter by broker
                             null, // don't filter by username
                             null, // don't filter by sub point
                             null, // no start date,
                             null); // no end date
            
      Enumeration e = matchingSubscriptions.elements();
      int matches = matchingSubscriptions.getSize();
      System.out.println("Found "+matches+" matches:");

      while (e.hasMoreElements()) {
        Subscription thisSub = (Subscription)e.nextElement();
        System.out.println("-----");
        System.out.println("Broker="+thisSub.getBroker());
        System.out.println("Topic="+thisSub.getTopicName());
        System.out.println("Client="+thisSub.getClient());
        System.out.println("Filter="+thisSub.getFilter());
        System.out.println("Reg date="
          +thisSub.getRegistrationDate());
        System.out.println("User="+thisSub.getUser());
        System.out.println("Sub point="
          +thisSub.getSubscriptionPoint());
      }
    } catch (ConfigManagerProxyException e) {
      e.printStackTrace();
    }
  }
}

アクティブなサブスクリプションのセットを照会するメソッドは ConfigManagerProxy.getSubscriptions() です。これは、サブスクリプションのフィルターに使用する照会を定義します。 トピック、ブローカー、ユーザー ID、および subscriptionPoint の各パラメーターは、ワイルドカード文字を表すために % 文字を含めることのできるストリングです。

startDate および endDate パラメーターのタイプは GregorianCalendar です。これは、一致するサブスクリプションの登録時間を制約するために使用できます。 このメソッドに対するすべてのパラメーターで、ヌル値または空の値 (ストリング引数の場合) は、「この属性でフィルタリングしない」ことを意味します。

前の例で、このメソッドに提供されているヌル以外のパラメーターは topic ストリング shares% のみです。これは、トピック名が "shares" で始まるすべてのサブスクリプションを戻すように CMP に指示します。

照会の結果を表す SubscriptionsProxy のインスタンスがこのメソッドから戻されます。 このクラスは AdministeredObject から継承しているため、このオブジェクトの属性は構成マネージャーから非同期に提供されます。さらに、その属性を問い合わせるメソッドは、CMP が情報の到着を待機している間、一時的にブロックすることができます。

照会からの個々の一致を表す Subscription オブジェクトは、SubscriptionsProxy によって便宜上使用される小さいデータ構造で、それ自体はブロックしたり、例外をスローしたりしません。

AdministeredObject タイプであるにもかかわらず、SubscriptionsProxy オブジェクトは AdministeredObjectListeners をそれ自体に対して登録することができません。 これは、照会の結果が構成マネージャーから戻されると、照会を再実行依頼しなければ、一致するサブスクリプションのセットが変更されるかどうか通知されないことを意味します。 この動作の結果として、サブスクリプション照会の結果は元の照会が行われたときにのみ正しいことが保証されます。

SubscriptionsProxy.deleteSubscriptions() メソッドを使用して、サブスクリプションを削除することができます。 SubscriptionsProxy オブジェクトは AdministeredObjectListeners を持つことができないため、そのようなアクションの結果は ConfigManagerProxy オブジェクトのリスナーに対してパブリッシュされます。

関連タスク
構成マネージャー・プロキシー・アプリケーションの開発および実行用の環境の構成
構成マネージャー・プロキシーの拡張機能
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2006 最終更新: 08/21/2006
ae33120_