全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-22 8 分钟 ✍️ juanwangdev

消息追踪插件

消息追踪插件记录消息路由过程的详细信息,用于调试和问题定位。

安装与启用

插件为 RabbitMQ 官方内置,无需额外下载。

Bash
# 启用追踪插件
rabbitmq-plugins enable rabbitmq_tracing

# 重启 RabbitMQ
systemctl restart rabbitmq-server

# 验证插件状态
rabbitmq-plugins list | grep tracing

插件启用后通过 Management UI 或命令行配置追踪规则。

创建追踪日志

追踪日志记录指定 VHost 的消息流转信息。

Bash
# 创建追踪日志(命令行方式)
rabbitmqctl trace_on -p /

# 创建追踪日志(指定日志名称)
rabbitmqctl trace_on -p / -n my_trace

# 关闭追踪
rabbitmqctl trace_off -p /

# 查看当前追踪状态
rabbitmqctl tracing_status

通过 Management UI 创建:

  1. 访问 http://localhost:15672
  2. 进入 Admin → Tracing
  3. 点击 "Add a trace"
  4. 设置 VHost、日志格式、输出方式

Java Client 配置追踪

追踪插件通过 Policy 或声明 Tracing Exchange 实现。

Java
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();

// 方式1:通过 Policy 启用追踪
Map<String, Object> policyArgs = new HashMap<>();
policyArgs.put("trace", "true");
channel.exchangeDeclare("traced_exchange", "topic", true);
// 应用策略(需预先创建策略)
// rabbitmqctl set_policy -p / trace_all ".*" '{"trace":"true"}'

// 方式2:声明追踪交换机
Map<String, Object> exchangeArgs = new HashMap<>();
exchangeArgs.put("x-tracing-enabled", true);
channel.exchangeDeclare("traced_exchange", "topic", true, false, exchangeArgs);

追踪会影响性能,生产环境建议仅在排查问题时临时开启。

追踪日志格式

追踪日志记录消息的完整流转路径。

Bash
# 日志默认输出到 RabbitMQ 日志文件
# Linux: /var/log/rabbitmq/rabbit@*.log
# 查看追踪日志
tail -f /var/log/rabbitmq/rabbit@*.log | grep tracing

日志示例:

Bash
2026-05-22 10:30:15 [tracing] VHost: /
2026-05-22 10:30:15 [tracing] Exchange: my_exchange (topic)
2026-05-22 10:30:15 [tracing] Routing Key: order.created
2026-05-22 10:30:15 [tracing] Message: {"order_id": "12345"}
2026-05-22 10:30:15 [tracing] Delivered to Queue: order_queue

日志字段说明:

字段说明
VHost虚拟主机
Exchange交换机名称和类型
Routing Key消息路由键
Message消息内容(默认截断)
Delivered to Queue目标队列名称

按规则追踪

通过 Policy 实现按规则过滤追踪。

Bash
# 仅追踪特定路由键的消息
rabbitmqctl set_policy -p / trace_order "order\..*" '{"trace":"true"}'

# 仅追踪特定交换机的消息
rabbitmqctl set_policy -p / trace_exchange "^order_exchange$" '{"trace":"true"}'

# 查看所有追踪策略
rabbitmqctl list_policies

Policy 匹配规则:

  • 名称正则匹配交换机或路由键
  • 仅匹配的消息会被记录,降低性能影响

日志输出到文件

默认追踪日志输出到 RabbitMQ 主日志,可配置独立文件。

text
# 编辑 rabbitmq.conf
# Linux: /etc/rabbitmq/rabbitmq.conf

# 配置追踪日志输出
log.tracing.file = /var/log/rabbitmq/tracing.log
log.tracing.file.count = 5
log.tracing.file.max_size = 10485760

配置说明:

配置项说明默认值
log.tracing.file日志文件路径主日志文件
log.tracing.file.count日志轮转数量5
log.tracing.file.max_size单文件最大大小(字节)10MB

追踪日志文件需定期清理,避免磁盘占用过大。

注意事项

  1. 追踪会显著降低消息吞吐,生产环境仅在排查时开启
  2. 追踪日志包含消息内容,注意数据隐私和合规要求
  3. 日志文件会持续增长,需配置合理的轮转策略
  4. 追踪完成后务必关闭,避免持续影响性能

要点总结

  • rabbitmq_tracing 插件记录消息在交换机和队列中的流转路径
  • 通过 rabbitmqctl trace_on 开启追踪,trace_off 关闭
  • 日志包含 VHost、交换机、路由键、消息内容和目标队列信息
  • 通过 Policy 实现按规则过滤追踪,降低性能影响
  • 追踪严重影响性能,生产环境仅在排查问题时临时开启

📝 发现内容有误?点击此处直接编辑

← 上一篇 消息过滤与拦截
下一篇 → 内存管理调优
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库