今天给各位分享rabbitmq如何保证消息不丢的知识,其中也会对rabbitmq五种消息模型进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
面试官:如何保证RocketMQ/RabbitMQ消息数据100%不丢失
生产端可靠性投递,即生产端要确保将消息正确投递到RabbitMQ中。生产端投递的消息丢失的原因有很多,比如消息在网络传输的过程中发生网络故障消息丢失,或者消息投递到RabbitMQ时RabbitMQ挂了,那消息也可能丢失,而我们根本不知道发生了什么。针对以上情况,RabbitMQ本身提供了一些机制。
RocketMQ 中的事务,它解决的问题是,确保执行本地事务和发消息这两个操作,要么都成功,要么都失败。并且,RocketMQ 增加了一个事务反查的机制,来尽量提高事务执行的成功率和数据一致性。
- 重复消费与幂等性: 消息队列如Kafka需注意重复消费,通过offset机制和幂等性设计确保业务正确性。- 顺序性保证: ActiveMQ单队列保证消息顺序,RabbitMQ通过内存队列和worker处理实现。- 消息丢失处理: 通过确认机制、持久化存储和数据库辅助记录,确保消息不会丢失。
优势: 在RocketMQ没有出现之前,好多公司都从ActiveMQ切换到了RabbitMQ,它的优势在于可以保证数据不丢失,也能保证高可用性,即使集群部署部分机器宕机也能运行,然后支持部分高级功能,比如死信队列,消息重试之类的。
后来版本开始支持复制,不支持事务,对消息的重复、丢失、错误没有严格要求,适合产生大量数据的互联网服务的数据收集业务。但是 kafka 相对来说很重,需要依赖 zookeeper,大公司里使用没问题,也少不了专人维护。RocketMQ 是阿里开源的一套可靠消息系统,已经捐赠 Apache 成为顶级项目。
rabbitmq如何保证消息不丢的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于rabbitmq五种消息模型、rabbitmq如何保证消息不丢的信息别忘了在本站进行查找喔。