6.4. 管理操作


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

6.4.1. 代理管理操作

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

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

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

可以在 ActiveMQServerControl 上使用管理操作 createQueue ()deployQueue ()destroyQueue () (带有 ObjectName org.apache.activemq.artemis:broker="BROKER_NAME" 或资源 名称服务器)来创建或销毁队列。

如果 deployQueue 已存在队列,则 createQueue 将失败。

暂停和恢复队列
QueueControl 可以暂停并恢复底层队列。当队列暂停时,它将接收消息,但不会发送消息。恢复后,它将开始发送已排队的消息(若有)。
列出和关闭远程连接

使用 listRemoteAddresses () 检索客户端的远程地址。也可以使用 closeConnectionsForAddress () 方法关闭与远程地址关联的连接。

或者,使用 listConnectionIDs () 列出连接 ID,并使用 listSessions () 列出给定连接 ID 的所有会话。

管理事务

如果代理崩溃,当代理重启时,一些事务可能需要手动干预。使用以下方法帮助您解决遇到的问题。

使用 listPreparedTransactions () 方法列表,列出处于准备状态(事务以 opaque Base64 Strings)状态的事务。

使用 commitPreparedTransaction ()rollbackPreparedTransaction () 提交或回滚给定的准备事务,以解决 heuristic 事务。

使用 listHeuristic CommittedTransactions ()和 listHeur isticRolledBackTransactions 方法列出 heuristicly 完成事务。

启用和重置消息计数器

使用 enableMessageCounters ()disableMessageCounters () 方法启用和禁用消息计数器。

使用 resetAllMessageCounters ()resetAllMessageCounterHistories () 方法重置消息计数器。

检索代理配置和属性
ActiveMQServerControl 通过其所有属性(如 getVersion )方法公开代理的配置,以检索代理的版本等。
列出、创建和销毁 Core Bridge 和 diverts

使用 getBridgeNames ()getDivertNames () 方法列出部署的 Core Bridge 和 diverts。

使用网桥创建或销毁,并使用 createBridge ()destroyBridge () 或在 ActiveMQServerControl 上的 createDivert ()destroyDivert () (带有 ObjectName org.apache.activemq.artemis:broker="BROKER_NAME" 或资源 名称服务器)创建或销毁。

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

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> " 或资源名称地址的 AddressControl 类来管理 地址。<address-name>

使用 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> " 或资源名称 queue . <queue-name>)。

队列上的大多数管理操作都会使用一个消息 ID (例如,删除单个消息)或过滤器(例如,将所有消息与给定属性过期)。

过期、发送到死信地址并移动消息

使用 expireMessages () 方法使来自队列的消息过期。如果定义了到期地址,则会将消息发送到此地址,否则将丢弃它们。您可以在 broker.xml 配置文件的 address-settings 元素中为地址 或一组 地址(以及绑定到这些地址的队列)定义到期地址。例如,请参阅 了解默认代理配置 中的"默认消息地址设置"部分。

使用 sendMessagesToDeadLetterAddress () 方法向死信地址发送消息。此方法返回发送到死信地址的消息数。如果定义了死信地址,则会将消息发送到此地址,否则将从队列中删除它们并丢弃。您可以在 broker.xml 配置文件的 address 或 一组 地址(以及绑定到那些地址的队列)定义死信 地址。例如,请参阅 了解默认代理配置 中的"默认消息地址设置"部分。

使用 moveMessages () 方法将消息从一个队列移动到另一个队列。

列出和删除消息

使用 listMessages () 方法列出来自队列的消息。它将返回一个 Map 数组,每个消息一个 映射

使用 removeMessages () 方法从队列中删除消息,它返回单个消息 ID 变体的布尔值或过滤器变体删除的消息数量。此方法采用 过滤器参数 来只删除过滤的消息。将过滤器设置为空字符串将删除所有消息。

计数消息
队列中的消息数量通过 getMessageCount () 方法返回。或者,countMessages () 将返回队列中与给定过滤器匹配的消息数。
更改消息优先级
可以使用 changeMessagesPriority () 方法更改消息优先级,该方法 返回单个消息 ID 变体的布尔值或过滤器变体更新的消息数量。
消息计数器
可以使用 listMessageCounter ()listMessageCounterHistory () 方法(请参阅 第 6.6 节 “使用消息计数器”)为队列列出消息计数器(请参阅 )。也可以使用 resetMessageCounter () 方法为单个队列重置消息计数器。
检索队列属性
QueueControl 通过其属性(例如 getFilter () )公开队列设置,以检索队列的过滤器(如果使用一个队列,即 isDurable () ),以了解队列是否存活,以此类推。
暂停和恢复队列
QueueControl 可以暂停并恢复底层队列。当队列暂停时,它将接收消息,但不会发送消息。恢复后,它将开始发送已排队的消息(若有)。

6.4.4. 远程资源管理操作

您可以使用管理 API 启动和停止代理的远程资源(接受者、解除者、桥接等),以便在不需要完全停止的情况下使代理离线。

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

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.