6.4. 管理操作
无论您使用 JMX 还是 JMS 消息来管理 AMQ Broker,您都可以使用相同的 API 管理操作。使用管理 API,您可以管理代理、地址和队列。
6.4.1. 代理管理操作 复制链接链接已复制到粘贴板!
您可以使用管理 API 管理代理。
- 列出、创建、部署和销毁队列
可以使用
getQueueNames ()方法检索已部署队列的列表。可以使用管理操作
createQueue ()、deployQueue ()或destroyQueue ()在ActiveMQServerControl(通过ObjectNameorg.apache.activemq.artemis:broker="BROKER_NAME"或资源名称)创建或销毁队列。如果队列已存在,而
deployQueue不执行任何操作,则createQueue将失败。- 暂停和恢复队列
-
QueueControl可以暂停并恢复底层队列。当队列暂停时,它将接收消息,但不会发送它们。当它被恢复时,它将开始发送排队的消息(若有)。 - 列出和关闭远程连接
使用
listRemoteAddresses ()检索客户端的远程地址。也可以使用closeConnectionsForAddress ()方法关闭与远程地址关联的连接。或者,使用
listConnectionIDs ()列出连接 ID,并使用listSessions ()列出给定连接 ID 的所有会话。- 管理事务
如果代理崩溃,当代理重启时,一些事务可能需要人工干预。使用以下方法帮助您解决遇到的问题。
使用
listPreparedTransactions ()方法列表,列出处于准备状态(事务表示为不透明 Base64 字符串)的事务。使用
commitPreparedTransaction ()或rollbackPreparedTransaction() 提交或回滚给定准备的事务,以解析繁体事务。使用
listHeuristicCommittedTransactions ()和listHeuristicRolledBackTransactions方法列出自己已完成的事务。- 启用和重置消息计数器
使用
enableMessageCounters ()或disableMessageCounters ()方法启用和禁用消息计数器。使用
resetAllMessageCounters ()和resetAllMessageCounterHistories ()方法重置消息计数器。- 检索代理配置和属性
-
ActiveMQServerControl通过其所有属性(例如getVersion ()方法)公开代理的配置,以检索代理的版本等。 - 列出、创建和销毁 Core Bridge 和 diverts
分别使用
getBridgeNames ()和getDivertNames ()方法列出部署的 Core Bridge 和 diverts。使用 bridge 创建或销毁,并使用
createBridge ()和destroyDivert ()和createDivert ()和destroyDivert ()(带有ObjectNameorg.apache.activemq.artemis:broker="BROKER_NAME"或 resource nameserver)。- 停止代理并强制故障转移在任何当前附加的客户端中发生
在
ActiveMQServerControl上使用forceFailover ()(带有ObjectNameorg.apache.activemq.artemis:broker="BROKER_NAME"或资源名称服务器)注意由于此方法实际停止代理,因此您可能会收到错误。确切的错误取决于您用来调用方法的管理服务。
6.4.2. 地址管理操作 复制链接链接已复制到粘贴板!
您可以使用管理 API 管理地址。
使用带有 ObjectName org.apache.activemq.artemis:broker=" <broker-name> ", component=addresses,address=" <address-name> " 或 resourcename address. <address- name& gt; 的 。
AddressControl 类来管理地址
使用 addRole () 或 removeRole () 方法修改地址的角色和权限。您可以使用 getRoles () 方法列出与队列关联的所有角色。
6.4.3. 队列管理操作 复制链接链接已复制到粘贴板!
您可以使用管理 API 管理队列。
核心管理 API 处理队列。QueueControl 类定义队列管理操作(使用 ObjectName,org.apache.activemq.artemis:broker=" <broker-name> ",component=addresses,address=" <bound-address> ",subcomponent=queues,routing-type=" <routing-type> ",queue=" <queue-name> " 或 resource name queue . <queue-name>)。
队列上的大多数管理操作都使用单个消息 ID (例如,删除单个消息)或过滤器(例如,使用给定属性使所有消息过期)。
- 过期、发送到死信地址并移动消息
使用
expireMessages ()方法使来自队列的消息过期。如果定义了到期地址,则消息将发送到此地址,否则会丢弃它们。您可以在broker.xml配置文件的address-settings项中为地址 或一组 地址(以及绑定到这些地址的队列)定义到期地址。例如,请参阅 了解默认代理配置 中的"默认消息地址设置"部分。使用
sendMessagesToDeadLetterAddress ()方法将消息发送到死信地址。这个方法返回发送到死信地址的消息数。如果定义了死信地址,消息将发送到此地址,否则它们将从队列中删除并丢弃。您可以在broker.xml配置文件的address-settings项中为地址 或一组 地址(以及绑定到这些地址的队列)定义死信地址。例如,请参阅 了解默认代理配置 中的"默认消息地址设置"部分。使用
moveMessages ()方法将消息从一个队列移到另一个队列。- 列出和删除消息
使用
listMessages ()方法列出来自队列的消息。它将返回一个Map的数组,每个消息都有一个Map。使用
removeMessages ()方法从队列中删除消息,该方法为单个消息 ID 变体返回布尔值,或者过滤器变体删除的消息数量。此方法采用过滤器参数来仅删除过滤的消息。将过滤器设置为空字符串将生效时删除所有消息。- 计算消息
-
队列中的消息数量由
getMessageCount ()方法返回。或者,countMessages ()将返回与给定过滤器匹配的队列中的消息数量。 - 更改消息优先级
-
可以使用
changeMessagesPriority ()方法来更改消息优先级,该方法为单个消息 ID 变体返回布尔值,或者过滤器变体的更新消息数量。 - 消息计数器
-
可以为带有
listMessageCounter ()和listMessageCounterHistory ()方法的队列列出消息计数器(请参阅 第 6.6 节 “使用消息计数器”)。也可以使用resetMessageCounter ()方法为单个队列重置消息计数器。 - 检索队列属性
-
QueueControl通过其属性(如getFilter ())公开队列设置(例如,getFilter())用于检索队列的过滤器(如果创建了队列,则知道队列是否持久等)。 - 暂停和恢复队列
-
QueueControl可以暂停并恢复底层队列。当队列暂停时,它将接收消息,但不会发送它们。当它被恢复时,它将开始发送排队的消息(若有)。
6.4.4. 远程资源管理操作 复制链接链接已复制到粘贴板!
您可以使用管理 API 启动和停止代理的远程资源(接受器、分离、桥接等),以便在不完全停止的情况下,代理可以离线。
- acceptors
-
使用
start ()或.AcceptorControl类上的stop ()方法(使用ObjectNameorg.apache.activemq.artemis:broker=" <broker-name> ",component=acceptors,name=" <acceptor-name> " 或 resource nameacceptor. <address-name>))。acceptor 参数可以使用AcceptorControl属性来检索。有关 Acceptors 的更多信息,请参阅 Network Connections: Acceptors 和 Connectors。 - diverts
-
使用
DivertControl类上的start ()或stop ()方法(带有ObjectNameorg.apache.activemq.artemis:broker=" <broker-name> ",component=diverts,name=" <divert-name> " 或 resource namedivert. <divert-name> )来启动或停止一个 divert。可使用DivertControl属性来检索 divert 参数。 - bridge
-
使用
start ()(resp)启动或停止网桥。BridgeControl类上的stop ())方法(带有ObjectNameorg.apache.activemq.artemis:broker=" <broker-name> ",component=bridge,name=" <bridge-name> " 或 resource namebridge. <bridge-name>))。网桥参数可以使用BridgeControl属性来检索。 - 广播组
-
在
BroadcastGroupControl类上使用start ()或stop ()方法启动或停止广播组(带有ObjectNameorg.apache.activemq.artemis:broker=" <broker-name> ",component=broadcast-group,name=" <broadcast-group-name> " 或 resource namebroadcastgroup. <broadcast-group-name>)。可以使用BroadcastGroupControl属性来检索广播组参数。如需更多信息,请参阅 Broker 发现方法。 - 发现组
-
使用
DiscoveryGroupControl类上的start ()或stop ()方法启动或停止发现组(使用ObjectNameorg.apache.activemq.artemis:broker=" <broker-name> ",component=discovery-group,name=" <discovery-group-name> " 或 resource namediscovery. <discovery-group-name>)。发现组参数可以使用DiscoveryGroupControl属性来检索。如需更多信息,请参阅 Broker 发现方法。 - 集群连接
-
使用
ClusterConnectionControl类上的start ()或stop ()方法启动或停止集群连接(使用ObjectNameorg.apache.activemq.artemis:broker=" <broker-name> ",component=cluster-connection,name=" <cluster-connection-name> " 或 resource nameclusterconnection. <cluster-connection-name>)。可以使用ClusterConnectionControl属性来检索集群连接参数。如需更多信息,请参阅 创建代理集群。