이 작업은 구성 관리자 프록시(CMP) 응용프로그램을 개발하는 더 큰 작업의 일부분으로 CMP 고급 기능 중 하나입니다.
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(); } } }
활성 Subscription 세트를 조회하는 메소드가 ConfigManagerProxy.getSubscriptions()인데, Subscription을 필터링하는 데 사용하는 조회를 정의합니다. 토픽, 브로커, 사용자 ID 및 subscriptionPoint 매개변수는 와일드카드 문자를 표시하는 % 문자가 포함될 수 있는 문자열입니다.
startDate 및 endDate 매개변수는 유형이 GregorianCalendar인데, 일치 Subscription의 등록 시간을 제한하는 데 사용할 수 있습니다. 이 메소드의 모든 매개변수에서는 널값 또는 문자열 인수의 경우 빈 값이 "이 속성에 따라 필터링되지 않음"을 의미합니다.
앞의 예에서 이 메소드로 제공되는 유일한 비널 매개변수가 topic 문자열 shares%인데, CMP가 토픽 이름이 "shares"로 시작되는 모든 Subscription을 리턴합니다.
조회 결과를 표시하는 SubscriptionsProxy의 인스턴스가 이 메소드에서 리턴됩니다. 이 클래스가 AdministeredObject로부터 상속될 경우, 이 오브젝트의 속성이 구성 관리자에서 비동기 형태로 제공되어 CMP가 정보 도착을 대기하는 동안 속성을 조회하는 메소드가 임시 차단될 수 있습니다.
조회에서 개별 일치를 표시하는 Subscription 오브젝트가 편의를 위해 SubscriptionsProxy에 사용되는 작은 데이터 구조이므로 예외가 차단 또는 전달된다는 점에 유의하십시오.
AdministeredObject 유형임에도 불구하고 SubscriptionsProxy 오브젝트에서는 AdministeredObjectListeners가 등록될 수 없습니다. 이는 구성 관리자에서 조회 결과가 일단 리턴되면 조회를 재전송하지 않는 한 일치 Subscription 세트 변경을 알 수 없다는 것을 의미합니다. 이 작동의 결과로 원래 조회 시에만 올바른 Subscription 조회 결과가 나타납니다.
SubscriptionsProxy.deleteSubscriptions() 메소드를 사용하여 Subscription을 삭제할 수 있습니다. SubscriptionsProxy 오브젝트가 AdministeredObjectListeners를 가질 수 없기 때문에 해당 조치 결과가 ConfigManagerProxy 오브젝트의 리스너에 공개됩니다.