跳至主要内容
版本:4.0

Firehose 追踪器

概述

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

这些通知与网络上的实际情况非常接近——例如,您将看到未确认的消息。

当此功能关闭时,它不会对性能产生任何影响;当它开启时,由于会生成和路由更多消息,因此性能会略有下降。

开启 Firehose

在开启此功能之前,请确定应在哪个节点和哪个虚拟主机上开启它。以下示例假设默认虚拟主机“/”和默认节点“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 机制消费和检查的消息称为“追踪消息”。

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

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

头部类型描述
exchange_name长字符串

发布消息的交换机的名称

routing_keys数组

路由键加上 CCBCC 头部的内容

properties内容属性
node长字符串生成追踪消息的 Erlang 节点
redelivered带符号整数

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

与原始消息主体相对应的追踪消息主体。

追踪插件

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

© 2024 RabbitMQ. All rights reserved.