6.4. 管理操作


无论您使用 JMX 还是 JMS 消息来管理 AMQ Broker,您都可以使用相同的 API 管理操作。使用管理 API,您可以管理代理、地址和队列。

6.4.1. 代理管理操作

您可以使用管理 API 管理代理。

列出、创建、部署和销毁队列

可以使用 getQueueNames () 方法检索已部署队列的列表。

可以使用管理操作 createQueue ()deployQueue ()destroyQueue ()ActiveMQServerControl (通过 ObjectName org.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 () (带有 ObjectName org.apache.activemq.artemis:broker="BROKER_NAME" 或 resource name server)。

停止代理并强制故障转移在任何当前附加的客户端中发生

ActiveMQServerControl 上使用 forceFailover () (带有 ObjectName org.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 () 方法(使用 ObjectName org.apache.activemq.artemis:broker=" <broker-name&gt; ",component=acceptors,name=" <acceptor-name> " 或 resource name acceptor. <address-name>))。acceptor 参数可以使用 AcceptorControl 属性来检索。有关 Acceptors 的更多信息,请参阅 Network Connections: Acceptors 和 Connectors
diverts
使用 DivertControl 类上的 start ()stop () 方法(带有 ObjectName org.apache.activemq.artemis:broker=" <broker-name> ",component=diverts,name=" <divert-name> " 或 resource name divert. < divert-name&gt; )来启动或停止一个 divert。可使用 DivertControl 属性来检索 divert 参数。
bridge
使用 start () (resp)启动或停止网桥。BridgeControl 类上的 stop ())方法(带有 ObjectName org.apache.activemq.artemis:broker=" <broker-name&gt; ",component=bridge,name=" <bridge-name> " 或 resource name bridge . <bridge-name>))。网桥参数可以使用 BridgeControl 属性来检索。
广播组
BroadcastGroupControl 类上使用 start ()stop () 方法启动或停止广播组(带有 ObjectName org.apache.activemq.artemis:broker=" <broker-name&gt; ",component=broadcast-group,name=" <broadcast-group-name> " 或 resource name broadcastgroup. <broadcast-group-name>)。可以使用 BroadcastGroupControl 属性来检索广播组参数。如需更多信息,请参阅 Broker 发现方法
发现组
使用 DiscoveryGroupControl 类上的 start ()stop () 方法启动或停止发现组(使用 ObjectName org.apache.activemq.artemis:broker=" <broker-name&gt; ",component=discovery-group,name=" <discovery-group-name> " 或 resource name discovery. <discovery-group-name>)。发现组参数可以使用 DiscoveryGroupControl 属性来检索。如需更多信息,请参阅 Broker 发现方法
集群连接
使用 ClusterConnectionControl 类上的 start ()stop () 方法启动或停止集群连接(使用 ObjectName org.apache.activemq.artemis:broker=" <broker-name&gt; ",component=cluster-connection,name=" <cluster-connection-name> " 或 resource name clusterconnection. <cluster-connection-name>)。可以使用 ClusterConnectionControl 属性来检索集群连接参数。如需更多信息,请参阅 创建代理集群
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.