八、消息追踪
1、介绍
在使用任何消息中间件的过程中,难免会出现某条消息丢失的情况。对于RabbitMQ而言,可能是因为生产者或消费者与RabbitMQ之间断开了连接,而它们与RabbitMQ又采用了不同的确认机制;也有可能是因为交换机与队列之间不同的转发策略;甚至是交换机没有与任何队列进行绑定,生产者又不感而知或没有采取相应的措施;另外RabbitMQ本身集群策略也可能导致消息的丢失。这个时候就需要有一个较好的机制跟踪记录消息的投递过程,已协助开发人员和运维人员对问题的定位。
在RabbitMQ中可以使用Firehose和rabbitmq_tracing插件功能来实现消息的追踪。
2.消息追踪-Firehose
firehose的机制是将生产者投递给rabbitmq的消息,rabbitmq投递给消费者的消息按照指定的格式发送默认的exchange上。这个默认的exchange的名称为amq.rabbitmq.trace,它是一个topic类型 exchange。发送到这个exchange上的消息的routing key为 publish.exchangename和deliver.queuename。其中exchangename和queuename为实际exchange和queue的名称,分别对应生产者投递到exchange的消息,和消费者从queue上获取的消息。
注意:打开 trace 会影响消息写入功能,适当打开后请关闭。
- rabbitmactl trace_on: 开启Firehose命令
- rabbitmgctl trace_off: 关闭Firehose命令
3.消息追踪-rabbitmq_tracing插件
rabbitmq_tracing和Firehose在实现上如出一辙,只不过rabbitmq_tracing的方式比Firehose多了-层GUI的包装,更容易使用和管理。
启用插件: rabbitmq-plugins enable rabbitmq_tracing
添加Traces
项目源码下载:springboot-rabbitmq-super
文章评论