RabbitMQ高级特性——消息追踪(记录消息的传递日志)

大伙可以到我的RabbitMQ专栏获取更多信息

什么是消息追踪

在使用任何消息中间件的过程中,难免会遇到消息由于某些意外事件丢失的情况。

对于RabbitMQ而言:

  • 可能是生产者、消费者于MQ的连接不稳定,网络波动甚至断连,RabbitMQ也针对生产者和消费者分别提供了对应的消息可靠性机制
  • 也有可能是交换机于队列之间的分发策略导致的消息丢失
  • RabbitMQ自身的集群策略也有可能导致消息的丢失
  • ......

此时就要采取一些较为完善的消息追踪机制,来跟踪消息从产生到被消费整个传递的链路,从而协助运维和开发人员快速定位问题。

对于RabbitMQ来说,可以使用Firehose和RabbitMQ_tracing插件来实现消息的追踪。

Firehose

Firehose的机制:

当生产者发送消息给到MQ的时候,RabbitMQ会同样发送一条一样的消息(且消息信息更加详细)到默认的exchange上,这个默认的exchange为amq.rabbitmq.trace,他是一个topic类型的exchange。发送到这个exchange上的Routing key为publish.exchangename和deliver.queuename。其中"exchangename"的字符串内容为实际生产者发送到的exchange的名称,"queuename"的字符串为该消息被分发到的队列名称。

以上相当于“复制一份”消息的机制,就可以满足消息的追踪所需要的必要信息的记录。由于这条“复制”的消息的所经过的exchange和queue都是RabbitMQ内部交换机和队列,且都都是持久化的(durable=true),所以是相对安全的。

注意:

打开trace会影响消息的接入功能,请酌情使用。

rabbitmqctl trace_on:开启Firehose
rabbitmqctl trace_off:关闭Firehose

RabbitMQ_tracing

使用命令开启插件:

rabbitmq-plugins enable rabbitmq_tracing
rabbitmq-plugins disable rabbtimq_tracing

重启RabbitMQ之后生效

开启该插件之后管理后台会发生变化

创建一个trace

创建之后会有一个日志文件产生,这里面就会记录关于这个vhost下发送消息的详细信息

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值