执行该管理动作之前需要先创建对象工厂,然后才能使用该对象工厂创建可以执行该管理动作的对象。
以下代码演示了如何使用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) {
//异常处理代码
}
...