🎈本篇文章主要会设计会涉及以下内容:
- MQ消息的重试机制以及重试规则的配置
- 什么是延时消息?
- MQ延时消息的两种实现方式
- 死信Exchange
一、🎈消息重试机制
消息队列RabbitMQ版服务端有默认的消息重试机制,不支持您在Consumer客户端重新配置消息重试机制和关闭消息重试机制。消息队列RabbitMQ版服务端默认的消息重试机制如下:
- 如果您没有开启Consumer客户端消费消息,就不会触发消息重试。
- 如果您开启了Consumer客户端消费消息,消费失败,即Consumer客户端一分钟内没有应答消息,则触发消息重试。
重试规则
- 重试期间,任何一次消费成功,即Consumer客户端应答消息,则立即停止消息重试。
- 重试时间间隔为60秒。
- 重试最多16次。超过16次,则停止重试。您可以选择:
- 丢弃消息:
如果您没有为重试失败的消息所在的Queue配置死信Exchange,则消息重试失败后被丢弃。
- 将消息发送至死信Exchange:
如果您为重试失败的消息所在的Queue配置了死信Exchange,则消息重试失败后被发送到死信Exchange,并根据RoutingKey和Binding Key被路由至目标Queue。目标Queue中的消息支持查询和导出。
- 丢弃消息:
Spring:
# 消息队列配置
rabbitmq:
host: 8.129.42.30 #rabbitmq的连接地址
port: 5672 #rabbitmq的连接amqp端口号
virtual-host: / #rabbitmq的虚拟host
username: sdjy #rabbitmq的用户名
password: sdjy@rabbitmq2021 #rabbitmq的密码
listener:
simple:
acknowledge-mode: manual # 确认消息-手动确认
retry:
enabled: true # 开启重试
max-attempts: 3 # 重试次数,默认为3次
initial-interval: 5000 # 重试间隔时间(单位毫秒