A API de Assinaturas do Configuration Manager Proxy

Visualizar e trabalhar com assinaturas ativas.

Esta tarefa faz parte da tarefa maior de desenvolvimento de aplicativos Configuration Manager Proxy (CMP) e descreve um dos recursos avançados do CMP.

Você pode utilizar o CMP para mostrar e excluir o conjunto de assinaturas ativas no domínio. O exemplo a seguir fornece informações sobre todas as assinaturas para tópicos com nomes que começam com a cadeia "shares".

import java.util.Enumeration;
import com.ibm.broker.config.proxy.*;

public class QuerySubscriptions {

  public static void main(String[] args) {

    ConfigManagerProxy cmp = null;
    BrokerProxy bp = null;
    TopologyProxy tp = null;
    try {
      ConfigManagerConnectionParameters cmcp =
         new MQConfigManagerConnectionParameters(
           "localhost",
           1414,
           "");
      cmp = ConfigManagerProxy.getInstance(cmcp);
      tp = cmp.getTopology();
      bp = tp.getBrokerByName("BROKER_A");
    } 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 {
      SubscriptionQuery sq = bp.createSubscriptionQuery();
      sq.setString(SubscriptionParameters.TOPIC, topic); // set the topic
      SubscriptionsProxy matchingSubscriptions = sq.executeQuery();
        
            
      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();
    }
  }
}

A classe que consulta o conjunto de assinaturas ativas é SubscriptionsQuery(), que define a consulta que é utilizada para filtrar as assinaturas. Os parâmetros que você define em SubscriptionsParameters e SubscriptionsParameters.MQ podem ser configurados em uma instância da classe para construir uma consulta. Você pode incluir o caractere % para denotar caracteres curingas em parâmetros de cadeia de tipos.

Os parâmetros SubscriptionsParameters.STARTDATE e SubscriptionsParameters.ENDDATE são do tipo GregorianCalendar. Utilize esses parâmetros para restringir o tempo de registro das assinaturas correspondentes.

No exemplo precedente, apenas o parâmetro topic, da cadeia de tipos, é configurado como shares%. Essa configuração informa ao CMP para retornar todas as assinaturas cujo nome do tópico comece com "shares".

A consulta é emitida quando você chamada o método SubscriptionQuery.executeQuery(). Ela retorna uma instância SubscriptionsProxy, que representa os resultados da consulta. Como essa classe é herdada da classe AdministeredObject, os atributos desse objeto são fornecidos de maneira assíncrona pelo Configuration Manager. Portanto, os métodos que interrogam os atributos SubscriptionsProxy podem ser temporariamente bloqueados enquanto o CMP aguarda a chegada das informações.

A classe Subscription, e sua subclasse MQSubscription que representam uma correspondência individual da consulta, é uma estrutura pequena que é utilizada por conveniência pelo SubscriptionsProxy, e não bloqueia ou lança exceções.

Mesmo que os objetos SubscriptionsProxy sejam do tipo AdministeredObject, você não pode registrar o AdministeredObjectListeners neles. Esta característica significa que quando os resultados de uma consulta são retornados do Configuration Manager, você não será notificado se o conjunto das assinaturas correspondentes for alterado, a menos que você reenvie a consulta. A conseqüência deste comportamento é que os resultados de consultas de assinaturas são garantidos como corretos apenas no momento em que foi feita a consulta original.

Você pode excluir as assinaturas utilizando o método SubscriptionsProxy.deleteSubscriptions(). Como os objetos SubscriptionsProxy não podem ter AdministeredObjectListeners, o resultado dessa ação é publicado para os listeners do objeto ConfigManagerProxy.

Tarefas relacionadas
Configurando um Ambiente para Desenvolvimento e Execução de Aplicativos do Configuration Manager Proxy
Recursos Avançados do Configuration Manager Proxy
Informações relacionadas
API do Configuration Manager Proxy
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009. Todos os Direitos Reservados.
Última atualização : 2009-02-13 15:33:24

ae33120_