跳到主要内容
版本:4.1

Firehose Tracer

概述

有时,在开发或调试期间,能够看到发布的每条消息和传递的每条消息非常有用。 RabbitMQ 具有“firehose”功能,管理员可以启用(在每个节点、每个 vhost 的基础上)一个交换器,发布和传递通知应抄送到该交换器。

这些通知非常接近线路上发生的情况 - 例如,您将看到未确认的消息。

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

开启 firehose

在开启此功能之前,请确定应在哪个节点和哪个 vhost 上启用它。 以下示例假定默认 vhost “/” 和默认节点 “rabbit@(hostname)”。 使用 -n 参数指定其他节点,使用 -p 参数指定另一个 vhost。

接下来,在选定的 vhost 中声明队列,将它们绑定到主题交换器 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 机制消费和检查的消息称为“追踪消息”。

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

包含有关原始消息元数据的追踪消息标头

标头类型描述
exchange_namelongstr

消息发布到的交换器的名称

routing_keysarray

路由键加上 CCBCC 标头 的内容

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

消息是否设置了 redelivered 标志(仅限离开 broker 的消息)

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

追踪插件

rabbitmq_tracing 插件 构建于 tracer 之上,并提供 GUI 来捕获追踪消息并将它们以文本或 JSON 格式文件记录。

© . All rights reserved.