知识卡片
消息追踪本质是流转旁路
内容
RabbitMQ的Firehose功能不需要修改消息本身的投递逻辑,而是把每一次发布和投递动作,按publish.{交换器名}和deliver.{队列名}这样的路由键,额外转发一份到一个内置的topic交换器amq.rabbitmq.trace上,绑定不同队列就能按需订阅想追踪的那部分流量——”要不要记录追踪日志”和”消息本该怎么路由”完全解耦,不侵入原有路由逻辑。但这份旁路不是免费的,官方数据显示开启后在极端情况下会拖累30%~40%的服务器性能,因此只适合排障时临时开启。发散:给系统加可观测性时,”旁路复制一份流量”是侵入性最小的方式,代价是必须承认它会额外消耗资源,不能把诊断工具的开销当作零成本。
参考来源
《RabbitMQ实战指南》第11章《RabbitMQ扩展》