5.4.3. 队列管理操作


您可以使用 management 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>" 或 name queue.<queue-name>)。

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

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

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

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

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

列出和删除信息

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

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

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

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.