2021 RabbitMQ面试精华:节点类型、保证层级与避免重复

需积分: 5 0 下载量 9 浏览量 更新于2024-08-03 收藏 7KB MD 举报
RabbitMQ是流行的开源消息代理,常用于分布式系统之间的通信。在2021年的面试中,面试官可能会关注以下几个关键知识点: 1. **节点类型与架构**: 集群中的节点主要有两种类型:内存节点(ram)和磁盘节点(disc)。内存节点主要存储临时状态和快速访问的数据,而磁盘节点除了内存状态外,还负责持久化数据。RabbitMQ集群至少需要一个磁盘节点以确保数据的可靠性。 2. **集群节点功能**: 内存节点主要用于处理短期任务,而磁盘节点在节点故障时提供数据恢复。当master节点挂掉时,ConsumerCancellationNotification机制确保连接到slave节点的消费者能接收到取消通知,并重新从新的master获取消息,防止消息丢失和重复。 3. **消息传输保证**: RabbitMQ支持三种消息传输保证级别: - Atmostonce:最多一次,允许消息丢失,但不会重复。 - Atleastonce:最少一次,保证消息不丢失,但可能出现重复。 - Exactlyonce:恰好一次,确保每条消息只被处理一次,适合对数据一致性要求极高的场景。 4. **事务机制**: RabbitMQ的事务机制涉及channel的txSelect方法用于开启事务,txCommit用于提交事务,txRollback用于回滚事务。如果事务中发生异常,事务会自动回滚,以保证数据的完整性和一致性。 5. **消息重复性控制**: 避免消息重复的关键在于生产和消费端的策略。生产者生成的每条消息都有一个唯一的`inner-msg-id`,用于检测重复;消费者在消费时依赖于`bizId`(业务唯一标识)来确保消息幂等性,即同一消息不会被重复消费。 6. **生产与消费最佳实践**: 为了确保消息的唯一性和幂等性,生产者需维护消息ID,而消费者则需根据业务ID验证消息。同时,使用acknowledgment(确认模式)机制,确保消息被成功接收和处理。 面试者应对这些概念有深入的理解,并能根据具体问题灵活应用,特别是在实际项目场景中遇到的问题解决策略。此外,面试者还需了解RabbitMQ的其他特性,如路由规则、交换机、声明式队列管理等,这些都是RabbitMQ面试中可能被考察的内容。