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 | 数组 | 路由键加上 |
properties | 表 | 内容属性 |
node | 长字符串 | 生成追踪消息的 Erlang 节点 |
redelivered | 带符号整数 | 消息是否设置了 redelivered 标志(仅限离开代理的消息) |
与原始消息主体相对应的追踪消息主体。
追踪插件
rabbitmq_tracing
插件建立在追踪器之上,并提供了一个 GUI 来捕获追踪消息并将其记录在文本或 JSON 格式的文件中。