6.6. 使用消息计数器


您可以使用消息计数器来获取一段时间内队列的信息。这有助于您确定很难看到的趋势。

例如,您可以使用消息计数器来确定特定队列在一段时间内的使用方式。您还可以尝试通过使用管理 API 定期查询队列中的消息数量来获取此信息,但这不会显示队列实际使用的方式。队列中的消息数量可能会保持常量,因为没有客户端在其上发送或接收消息,或者因为发送到队列的消息数量等于从中消耗的消息数量。在这两种情况下,队列中的消息数量保持不变,即使它以非常不同的方式使用。

6.6.1. 消息计数器的类型

消息计数器提供有关代理上队列的附加信息。

数量
在代理启动后添加到队列的消息总数。
countDelta
自上次消息计数器更新以来添加到队列中的消息数量。
lastAckTimestamp
从队列中确认消息最后一次时间的时间戳。
lastAddTimestamp
在队列中添加消息最后一次时间的时间戳。
messageCount
队列中的当前消息数。
messageCountDelta
自上次消息计数器更新以来,从队列添加/删除的消息总数。例如,如果 messageCountDelta-10,则整个 10 个消息已从队列中删除。
udpateTimestamp
最后消息计数器更新的时间戳。
注意

您还可以组合消息计数器来确定其他有意义的数据。例如,若要知道自上次更新以来队列中有多少消息被消耗,您需要从 countDelta 中减去 messageCountDelta

6.6.2. 启用消息计数器

消息计数器可能会对代理的内存有较小的影响,因此默认禁用它们。要使用消息计数器,您必须首先启用它们。

流程

  1. 打开 & lt;broker_instance_dir> /etc/broker.xml 配置文件。
  2. 启用消息计数器。

    <message-counter-enabled>true</message-counter-enabled>
  3. 设置消息计数器历史记录和抽样周期。

    <message-counter-max-day-history>7</message-counter-max-day-history>
    <message-counter-sample-period>60000</message-counter-sample-period>
    message-counter-max-day-history
    代理应存储队列指标的天数。默认值为 10 天。
    message-counter-sample-period
    代理应抽样其队列来收集指标的频率(以毫秒为单位)。默认值为 10000 毫秒。

6.6.3. 检索消息计数器

您可以使用管理 API 来检索消息计数器。

先决条件

流程

  • 使用管理 API 检索消息计数器。

    // Retrieve a connection to the broker's MBeanServer.
    MBeanServerConnection mbsc = ...
    JMSQueueControlMBean queueControl = (JMSQueueControl)MBeanServerInvocationHandler.newProxyInstance(mbsc,
       on,
       JMSQueueControl.class,
       false);
    
    // Message counters are retrieved as a JSON string.
    String counters = queueControl.listMessageCounter();
    
    // Use the MessageCounterInfo helper class to manipulate message counters more easily.
    MessageCounterInfo messageCounter = MessageCounterInfo.fromJSON(counters);
    System.out.format("%s message(s) in the queue (since last sample: %s)\n",
    messageCounter.getMessageCount(),
    messageCounter.getMessageCountDelta());

其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.