跳至主内容
版本:4.3

Firehose 追踪器

概述

有时,在开发或调试过程中,能够查看每一条已发布和已投递的消息非常有用。RabbitMQ 具有“Firehose”功能,管理员可以开启该功能(基于每个节点、每个虚拟主机),将发布和投递的通知抄送(CC)到一个交换机中。

这些通知非常接近底层实际发生的传输情况——例如,你会看到尚未确认(unacked)的消息。

当此功能关闭时,对性能没有影响;当它开启时,由于会生成并路由额外的消息,性能会有所下降。

开启 Firehose

在开启此功能之前,请决定要在哪个节点和哪个虚拟主机(vhost)上开启。以下示例假设使用默认的虚拟主机“/”和默认节点“rabbit@(hostname)”。使用 -n 参数指定其他节点,使用 -p 参数指定其他虚拟主机。

接下来,在选定的虚拟主机内声明队列,将它们绑定到主题交换机 amq.rabbitmq.trace,并开始消费。

最后,开启 Firehose 追踪:

rabbitmqctl trace_on -p [virtual host]

关闭 Firehose

要关闭 Firehose,请运行:

rabbitmqctl trace_off -p [virtual host]

别忘了清理用于消费 Firehose 事件的任何队列。

请注意,Firehose 的状态不是持久化的;服务器启动时默认为关闭状态。

Firehose 事件消息格式

Firehose 将消息发布到主题交换机 amq.rabbitmq.trace。在本节中,我们将通过 Firehose 机制消费和检查的消息称为“追踪消息”。

追踪消息的路由键(routing key)将是“publish.{exchangename}”(针对进入节点的消息)或“deliver.{queuename}”(针对投递给消费者的消息)。

包含原始消息元数据的追踪消息头:

Header类型描述
exchange_namelongstr

消息发布到的交换机名称

routing_keysarray

路由键以及 CCBCC 消息头的内容

propertiestable内容属性(消息元数据)
节点longstr生成追踪消息的 Erlang 节点
redeliveredsignedint

消息的 redelivered(重投)标志位是否已设置(仅适用于离开 Broker 的消息)

追踪消息体,对应于原始消息的消息体。

追踪插件

rabbitmq_tracing 插件构建在追踪器之上,并提供了一个图形界面来捕获追踪消息,并将其记录在文本或 JSON 格式的文件中。

© . This site is unofficial and not affiliated with VMware.