6.3. 使用 JMS API 管理 AMQ Broker
Java 消息服务(JMS) API 允许您创建、发送、接收和读取消息。您可以使用 JMS 和红帽构建的 Apache Qpid JMS 客户端来管理代理。
6.3.1. 使用 JMS 消息和红帽构建的 Apache Qpid JMS 客户端配置代理管理
要使用 JMS 管理代理,您必须首先使用管理权限配置代理的管理地址。
流程
-
打开 &
lt;broker_instance_dir> /etc/broker.xml
配置文件。 添加 &
lt;management-address
> 元素并指定管理地址。默认情况下,管理地址为
activemq.management
。如果您不想使用默认值,您只需要指定不同的地址。<management-address>my.management.address</management-address>
为管理地址提供
管理用户权限
类型。此权限类型允许管理地址接收和处理管理消息。
<security-setting-match="activemq.management"> <permission-type="manage" roles="admin"/> </security-setting>
6.3.2. 使用 JMS API 和红帽构建的 Apache Qpid JMS 客户端管理代理
若要使用 JMS 消息调用管理操作,红帽构建的 Apache Qpid JMS 客户端必须实例化特殊的管理队列。
流程
-
创建
QueueRequestor
以发送消息到管理地址并接收回复。 -
创建
消息
。 -
使用 helper 类
org.apache.activemq.artemis.api.jms.management.JMSManagementHelper
使用管理属性填充消息。 -
使用
QueueRequestor
发送消息。 -
使用帮助程序类
org.apache.activemq.artemis.api.jms.management.management.JMSManagementHelper
从管理回复中检索操作结果。
例 6.2. 查看队列中的消息数
本例演示了如何使用 JMS API 查看 JMS 队列 exampleQueue
中的消息数量:
Queue managementQueue = ActiveMQJMSClient.createQueue("activemq.management"); QueueSession session = ... QueueRequestor requestor = new QueueRequestor(session, managementQueue); connection.start(); Message message = session.createMessage(); JMSManagementHelper.putAttribute(message, "queue.exampleQueue", "messageCount"); Message reply = requestor.request(message); int count = (Integer)JMSManagementHelper.getResult(reply); System.out.println("There are " + count + " messages in exampleQueue");