目录
一、MQ中间件的通用消息投递过程有哪些情况可能会造成丢数
1.1 可能出现问题的阶段
1.2 可能出现问题的细节点
专栏链接:IT老齐架构300讲笔记专栏
一、MQ中间件的通用消息投递过程有哪些情况可能会造成丢数
1.1 可能出现问题的阶段
1.1 可能出现问题的阶段
发送阶段,遇到高延迟,Producer会多次重发消息,直到Broker ack确认,过程中Broker会自动去重,超时Producer产生异常,应用进行捕获提示。 存储阶段,Broker先刷盘再ack确认,即便ack失败消息不会丢失,多次重试直到Producer接收,会导致消息积压。 消费阶段,Broker向Consumer发数据,一段时间未接收,自动重发,直到Consumer Ack确认,Consumer注意幂等处理
1.2 可能出现问题的细节点
1.异步刷盘(NSYNC_FLUSH),改同步刷盘
2.存储介质损坏,建议采用RAID10或分布式存储
3.不要启用自动Ack,RabbitMQ存在此问题
4.避开都市传说ActiveMQ
1.异步刷盘(NSYNC_FLUSH),改同步刷盘
2.存储介质损坏,建议采用RAID10或分布式存储
3.不要启用自动Ack,RabbitMQ存在此问题
4.避开都市传说ActiveMQ



