【RabbitMQ】消息追踪

为什么需要消息追踪?

使用MQ时经常会有这样的场景:生产者成功发送消息,消费者却找不到消息!?

为什么会出现这种消息异常丢失的情况呢?有可能是编码导致的逻辑错误,比如交换机与队列的绑定问题、交换机的转发策略问题;也有可能是不可避免的网络连接问题、集群分布问题…这时便需要一个跟踪消息的机制,来帮我们定位到消息失踪的原因。

在RabbitMQ中,可以使用 Firehoserabbitmq_tracing 插件来进行消息追踪。

 
 

Firehose

先说一下Firehose的原理。

生产者投递给RabbitMQ的消息、消费者从RabbitMQ取出的消息,都会将这个消息的跟踪信息发送到一个默认的交换机上。

这个默认的交换机名称为 amq.rabbitmq.trace ,这是一个topic类型的交换机;发送到这个交换机上的消息的routingKey为 publish.实际发生投递原消息动作的交换机名称 或者 deliver.实际发生消费原消息动作的队列名称 。这两种routingKey可能不好理解,下面会有清晰的举例说明。
 

在这里插入图片描述

上面的图中,除了amq.rabbitmq.trace 交换机,其余的都是我们自定义的。请思考,现在我向exchange_test投递一个消息,然后从queue_test消

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值