12.5. 管理队列

执行该管理动作之前需要先创建对象工厂,然后才能使用该对象工厂创建可以执行该管理动作的对象。

以下代码演示了如何使用API提供的功能管理MQ服务器上的队列。

try {
    //在执行下面的代码之前,需要先创建对象工厂,假设其名称为:factory
    //使用createMqManager创建一个IMqManager的实现类的对象,该对象用于管理网络上某台MQ服务器,
    //要管理的服务器由路由名参数指定,该对象采用默认的120秒请求超时时间
    IMqManager mqManager = factory.createMqManager("Admined Server Router Name");
    //创建一个QueueConfigureInfo对象,并指定要创建的队列的配置
    QueueConfigureInfo config = new QueueConfigureInfo("ApusicQueue");
    config.setJndiName("ApusicQueueJndiName");
    config.setCacheSize(100);
    //使用IMqManager接口的createQueue方法创建一个指定配置的队列
    if (!mqManager.isQueueExistent(config.getName())) {
         IQueueManager queue = mqManager.createQueue(config);
         ...
    }   
    ...  
} catch (JmsAdminException e) {
    //异常处理代码
}
...

try {
    //在执行下面的代码之前,需要先创建对象工厂,假设其名称为:factory
    //使用createMqManager创建一个IMqManager的实现类的对象,该对象用于管理网络上某台MQ服务器,
    //要管理的服务器由路由名参数指定,该对象采用默认的120秒请求超时时间
    IMqManager mqManager = factory.createMqManager("Admined Server Router Name");
    boolean removeRet = mqManager.removeQueue("ApusicQueue");  
    ...  
} catch (JmsAdminException e) {
    //异常处理代码
}
...

try {
    //在执行下面的代码之前,需要先创建对象工厂,假设其名称为:factory
    //使用createMqManager创建一个IMqManager的实现类的对象,该对象用于管理网络上某台MQ服务器,
    //要管理的服务器由路由名参数指定,该对象采用默认的120秒请求超时时间
    IMqManager mqManager = factory.createMqManager("Admined Server Router Name");
    Collection<ComponentState> allQueues = mqManager.getAllQueueState();
    for (Iterator<ComponentState> ite = allQueues.iterator(); ite.hasNext();) {
        ComponentState q = ite.next();
        System.out.println(q.getName());
        ...
    }
    ...  
} catch (JmsAdminException e) {
    //异常处理代码
}
...

try {
    //在执行下面的代码之前,需要先创建对象工厂,假设其名称为:factory
    //使用createMqManager创建一个IMqManager的实现类的对象,该对象用于管理网络上某台MQ服务器,
    //要管理的服务器由路由名参数指定,该对象采用默认的120秒请求超时时间
    IMqManager mqManager = factory.createMqManager("Admined Server Router Name");
    //通过参数指定要管理的队列
    IQueueManager qManager = mqManager.createQueueManager("ApusicQueue");
    QueueConfigureInfo config = qManager.getConfigure();
    System.out.println("Queue name is : " + config.getName());
    System.out.println("Queue jndi name is : " + config.getJndiName());
    System.out.println("Queue cache size is : " + config.getCacheSize());
    ...  
} catch (JmsAdminException e) {
    //异常处理代码
}
...

try {
    //在执行下面的代码之前,需要先创建对象工厂,假设其名称为:factory
    //使用createMqManager创建一个IMqManager的实现类的对象,该对象用于管理网络上某台MQ服务器,
    //要管理的服务器由路由名参数指定,该对象采用默认的120秒请求超时时间
    IMqManager mqManager = factory.createMqManager("Admined Server Router Name");
    IQueueManager qManager = mqManager.createQueueManager("ApusicQueue");
    QueueConfigureInfo config = new QueueConfigureInfo(null);
    config.setJndiName("ApusicQueueJndiName");
    config.setCacheSize(150);
    config.setExpiryCheckInterval(180);        
    qManager.setConfigure(config);            
    ...  
} catch (JmsAdminException e) {
    //异常处理代码
}
...

try {
    //在执行下面的代码之前,需要先创建对象工厂,假设其名称为:factory
    //使用createMqManager创建一个IMqManager的实现类的对象,该对象用于管理网络上某台MQ服务器,
    //要管理的服务器由路由名参数指定,该对象采用默认的120秒请求超时时间
    IMqManager mqManager = factory.createMqManager("Admined Server Router Name");
    IQueueManager qManager = mqManager.createQueueManager("ApusicQueue");
    System.out.println("Queue message count is : " + qManager.getMessageCount());
    ...  
} catch (JmsAdminException e) {
    //异常处理代码
}
...

try {
    //在执行下面的代码之前,需要先创建对象工厂,假设其名称为:factory
    //使用createMqManager创建一个IMqManager的实现类的对象,该对象用于管理网络上某台MQ服务器,
    //要管理的服务器由路由名参数指定,该对象采用默认的120秒请求超时时间
    IMqManager mqManager = factory.createMqManager("Admined Server Router Name");
    IQueueManager qManager = mqManager.createQueueManager("ApusicQueue");
    qManager.putMessage("hello!");
    ...  
} catch (JmsAdminException e) {
    //异常处理代码
}
...

try {
    //在执行下面的代码之前,需要先创建对象工厂,假设其名称为:factory
    //使用createMqManager创建一个IMqManager的实现类的对象,该对象用于管理网络上某台MQ服务器,
    //要管理的服务器由路由名参数指定,该对象采用默认的120秒请求超时时间
    IMqManager mqManager = factory.createMqManager("Admined Server Router Name");
    IQueueManager qManager = mqManager.createQueueManager("ApusicQueue");
    Collection<MessageIdentifier> msgIds = qManager.getAllMessages();
    Iterator<MessageIdentifier> ite = msgIds.iterator();
    while (ite.hasNext()) {
        MessageIdentifier msgId = ite.next();
        String jmsMsgId = msgId.getJmsMessageId(); 
        Message msg = qManager.getMessage(jmsMsgId);
        ...
    }
    ...  
} catch (JmsAdminException e) {
    //异常处理代码
}
...

try {
    //在执行下面的代码之前,需要先创建对象工厂,假设其名称为:factory
    //使用createMqManager创建一个IMqManager的实现类的对象,该对象用于管理网络上某台MQ服务器,
    //要管理的服务器由路由名参数指定,该对象采用默认的120秒请求超时时间
    IMqManager mqManager = factory.createMqManager("Admined Server Router Name");
    IQueueManager qManager = mqManager.createQueueManager("ApusicQueue");
    String jmsMsgId = 要删除的消息的JMSMessageID属性的值;
    qManager.removeMessage(jmsMsgId);
    ...  
} catch (JmsAdminException e) {
    //异常处理代码
}
...

try {
    //在执行下面的代码之前,需要先创建对象工厂,假设其名称为:factory
    //使用createMqManager创建一个IMqManager的实现类的对象,该对象用于管理网络上某台MQ服务器,
    //要管理的服务器由路由名参数指定,该对象采用默认的120秒请求超时时间
    IMqManager mqManager = factory.createMqManager("Admined Server Router Name");
    IQueueManager qManager = mqManager.createQueueManager("ApusicQueue");
    qManager.clearAllMessages();
    ...  
} catch (JmsAdminException e) {
    //异常处理代码
}
...

try {
    //在执行下面的代码之前,需要先创建对象工厂,假设其名称为:factory
    //使用createMqManager创建一个IMqManager的实现类的对象,该对象用于管理网络上某台MQ服务器,
    //要管理的服务器由路由名参数指定,该对象采用默认的120秒请求超时时间
    IMqManager mqManager = factory.createMqManager("Admined Server Router Name");
    IQueueManager qManager = mqManager.createQueueManager("ApusicQueue");
    qManager.restart();
    ...  
} catch (JmsAdminException e) {
    //异常处理代码
}
...