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_name | longstr | 消息发布到的交换器的名称 |
routing_keys | array | 路由键加上 |
properties | table | 内容属性(消息元数据) |
node | longstr | 生成追踪消息的 Erlang 节点 |
redelivered | signedint | 消息是否设置了 redelivered 标志(仅限离开 broker 的消息) |
追踪消息体,对应于原始消息的消息体。
追踪插件
rabbitmq_tracing
插件 构建于 tracer 之上,并提供 GUI 来捕获追踪消息并将它们以文本或 JSON 格式文件记录。