AMQ 在客户端库中提供了一套完整的管理API。通过该套API的接口可以在应用程序中实现对MQ服务器的动态管理和监控。被管理的服务器可以是应用程序连接的MQ网络中的任何一台服务器。
对服务器进行管理的模型如下图所示:
图11:管理模型示意图
在如上图所示的网络中,客户端应用(图中的Client Application)连接到MQ网络的最顶层节点上(图中的MQ_A),七台MQ服务器(图中的MQ_A到MQ_G)组成了一个树状结构的网络,而且客户端应用只能直接连接到“MQ_A”服务器上,无法直接连接到其他服务器。而在应用中却需要对任何一台服务器都能够执行管理动作,例如:判断服务器上的队列是否存在,在服务器上创建一个物理队列等等。这时客户端应用就可以通过使用管理API对网络上任意一台服务器执行管理动作。
通过管理API可以对网络上的任意一台MQ服务器执行以下的管理:
管理MQ服务,通过该功能,应用可以对MQ服务器的核心参数进行管理和配置。
管理队列,通过该功能,应用可以在服务器上执行创建队列、配置已有的队列、删除队列等管理动作。
管理主题,通过该功能,应用可以在服务器上执行创建主题、配置已有的主题、删除主题等管理动作。
管理持久化订阅者,通过该功能,应用可以在服务器上执行查询服务器上所有的持久化订阅者及其订阅的主题等管理动作。
管理JMS连接工厂,通过该功能,应用可以在服务器上执行创建JMS连接工厂、配置已有的JMS连接工厂、删除JMS连接工厂等管理动作。
管理路由连接器,通过该功能,应用可以在服务器上执行创建路由连接器、配置已有的路由连接器、删除路由连接器等管理动作。
对服务器执行Ping操作,通过该功能,应用可以查询直接连接的服务器与网络上任意一台服务器之间的消息发送时间。
监听服务器上的MQ事件,通过该功能,应用可以在客户端监听到某些在服务器上发生的事件,例如:服务器路由连接器的断开和连接,服务器上队列的创建和删除,服务器上的主题的创建和删除等等。
通过管理API的这些管理功能,应用可以做到在中央节点集中式的对整个MQ网络进行管理和配置,从而能够有效的协调子节点的应用系统的运行。
管理API由若干管理接口组成,以下是每个管理接口能够执行的管理功能的概要介绍。
IMqManager,该接口是用于管理网络上MQ服务器的接口。该接口能够执行的管理功能包括:
查看一个给定名称的队列是否存在。
创建一个队列。
删除一个队列。
创建一个IQueueManager接口的对象,用于具体管理一个队列。
创建一个用于管理服务器的传输队列的对象。
得到服务器上所有队列的名称和状态。
查看一个给定名称的主题是否存在。
创建一个主题。
删除一个主题。
创建一个ITopicManager接口的对象,用于具体管理一个主题。
得到服务器上所有主题的名称和状态。
查看一个给定名称的路由连接器是否存在。
创建一个路由连接器。
删除一个路由连接器。
创建一个IConnectorManager接口的对象,用于具体管理一个路由连接器。
得到服务器上所有路由连接器的名称和状态。
查看一个给定名称的连接工厂是否存在。
创建一个连接工厂。
删除一个连接工厂。
创建一个IConnectionFactoryManager接口的对象,用于具体管理一个连接工厂。
得到服务器上所有连接工厂的名称和状态。
取得服务器的路由表。
创建一个IMqServiceManager接口的对象,用于对该服务器的MQ服务进行管理和配置。
查看一个给定名称的持久化订阅者是否存在。
创建一个IDurableSubscriberMonitor接口的对象,用于具体监控一个持久化订阅者。
得到服务器上所有持久化订阅者的名称和Client Id。
IMqServiceManager,该接口是用于对服务器的MQ服务进行管理和配置的接口。该接口能够执行的管理功能包括:
得到MQ服务的配置。
设置MQ服务的配置。
重启MQ服务。
得到服务器目前的活动连接数。
IQueueManager,该接口是用于管理MQ服务器上某个队列的接口。该接口能够执行的管理功能包括:
得到该队列的配置。
设置该队列的配置。
得到该队列的消息数量。
将一个字符串封装为消息放到该队列中。
得到该队列的一个消息。
得到该队列的所有消息。
删除该队列的一个消息。
删除该队列的所有消息。
停止该队列的运行。
启动该队列。
重启该队列。
得到该队列的运行状态。
ITopicManager,该接口是用于管理MQ服务器上某个主题的接口。该接口能够执行的管理功能包括:
得到该主题的配置。
设置该主题的配置。
停止该主题的运行。
启动该主题。
重启该主题。
得到该主题的运行状态。
IDurableSubscriberMonitor,该接口是用于监控MQ服务器上某个持久化订阅者的接口。该接口能够执行的监控功能包括:
得到该持久化订阅者的名称。
得到该持久化订阅者的Client Id。
得到该持久化订阅者所订阅的所有主题的名称。
查询一个主题是否被该订阅者订阅了。
得到该订阅者订阅消息时指定的消息过滤器的字符串。
IConnectionFactoryManager是用于管理MQ服务器上某个连接工厂的接口。该接口能够执行的管理功能包括:
得到该连接工厂的配置。
设置该连接工厂的配置。
停止该连接工厂的运行。
启动该连接工厂。
重启该连接工厂。
得到该连接工厂的运行状态。
IConnectorManager是用于管理MQ服务器上某个路由连接器的接口。该接口能够执行的管理功能包括:
得到该路由连接器的配置。
设置该路由连接器的配置。
重启该路由连接器。
得到该路由连接器连接的源服务器的路由名。
得到该路由连接器连接的目的服务器的路由名。
对该API的所有管理接口的方法使用时都是同步调用,每次调用之后会一直等到管理结果返回或者调用超时,超时时将返回不确定的管理结果。超时时间可以在创建IMqManager接口的对象时指定。