6.4. 管理操作


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

6.4.1. 代理管理操作

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

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

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

可使用管理操作 createQueue()、deployQueue()destroyQueue() ActiveMQServerControl (通过 ObjectName org.apache. SLES.artemis:broker="BROKER_NAME" 或 resource name server)上创建或销毁队列。

如果队列已存在,则 createQueue 将失败,而 deployQueue 将不执行任何操作。

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

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

另外,也可使用 listConnectionIDs() 列出连接 ID,并使用 listSessions() 列出给定连接 ID 的所有会话。

管理事务

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

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

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

使用 listHeuristicCommittedTransactions()listHeuristicRolledBackTransactions 方法列出 Heuristicly 完成交易。

启用和重置消息计数器

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

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

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

列出部署的 Core Bridge,并分别使用 getBridgeNames()getDivertNames() 方法。

使用网桥创建或销毁,并使用 createBridge()destroyBridge()createDivert()ActiveMQServerControl (通过 ObjectName org.apache.clusterNetwork.artemis:broker="BROKER_NAME" 或 resource name server)上的 createDivert()和 destroyDivert()

停止代理并强制与任何当前附加的客户端进行故障切换

使用 ActiveMQServerControl 上的 forceFailover() (使用 ObjectName org.apache.activemq.artemis:broker="BROKER_NAME" 或 resource name server

注意

因为此方法实际停止代理,所以您可能会收到错误。确切的错误取决于您用于调用方法的管理服务。

6.4.2. 地址管理操作

您可以使用管理 API 管理地址。

使用 AddressControl 类及 ObjectName org.apache.activemq.artemis:broker=" <broker-name&gt; ", component=addresses,address=" <address-name> " 或 resource name address. & lt;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> " or resource name . <queue-name>))。

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

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

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

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

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

列出和删除消息

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

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

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

6.4.4. 远程资源管理操作

您可以使用管理 API 来启动和停止代理的远程资源(接受者、分离、网桥等),以便代理可以在不完全停止的情况下在给定时间段内离线。

acceptors
使用 start() 或.AcceptorControl 类(带有 ObjectName org.apache.activemq.artemis:broker=" <broker-name> ",component=acceptors,name=" <acceptor-name> " or the resource name acceptor. <address-name>)。acceptor 参数可以使用 AcceptorControl 属性检索。有关 Acceptors 的更多信息,请参阅网络连接: Acceptors 和 Connectors
竞争
DivertControl 类上使用 start()stop() 方法(使用 ObjectName org.apache.activemq.artemis:broker=" <broker-name> ",component=diverts,name="<divert-name> " or the resource name is the).可以使用 DivertControl 属性检索 Rart 参数。
网桥
使用 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.clusterNetwork.artemis:broker=" <broker-name> ",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> ",component=discovery-group,name=" <discovery-group-name> " 或 resourcename discovery. < discovery-group-name> )来启动或停止一个发现 组。发现组参数可以使用 DiscoveryGroupControl 属性来检索。如需更多信息,请参阅 Broker 发现方法
集群连接
使用 ClusterConnectionControl 类上的 start()stop() 方法(使用 ObjectName org.apache.clusterNetwork.artemis:broker=" <broker-name> ",component=cluster-connection,name=" <cluster-connection-name> " 或 resourcename clusterconnection. < cluster-connection-name> )来启动或停止 cluster connection。可以使用 ClusterConnectionControl 属性检索集群连接参数。如需更多信息,请参阅 创建代理集群
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.