08.1、消息中间件--RabbitMQ(20题)1
【RabbitMQ核心知识点】 1. **消息积压处理**: 当RabbitMQ中存在大量积压消息时,一种应急策略是: - 修复消费者问题,确保其能正常消费。 - 停止现有消费者,防止新消息继续堆积。 - 创建一个新的主题,设置partition数量为原来的10倍,并建立相应的临时队列,数量可能是原来的10倍或20倍。 - 编写一个临时消费者程序,部署后用于快速消费积压数据,直接将数据均匀分布到新创建的队列中,不进行耗时处理。 - 使用10倍的机器部署消费者,每台消费一个临时队列中的数据,实现并行消费。 - 完成快速消费后,恢复原来的消费者架构。 2. **消息过期与丢失**: 如果设置的消息过期导致部分丢失,可通过批量重导入数据到MQ中进行恢复。 3. **队列消息数量限制**: RabbitMQ队列中存储的消息数量理论上无限制,取决于服务器内存,但过多消息会降低处理效率。 4. **分布式部署**: RabbitMQ支持通过Federation和Shovel插件实现跨数据中心的分布式部署,以应对网络延迟问题。 5. **消息发送确认**: 使用发送方确认模式,发送者将信道设置为confirm模式,确保消息被正确投递。RabbitMQ在消息成功投递或持久化后发送确认,若发生内部错误,会发送NACK消息。 6. **消息消费确认**: 消费者需确认消息已被消费,RabbitMQ才会从队列中删除。消费者断开连接或取消订阅前未确认,消息将重新分发,可能引起重复消费,需在业务层面处理幂等问题。 7. **避免重复消费**: 生产者在消息中生成唯一ID以避免重复投递,消费者根据bizId判断是否重复消费,bizId应为业务全局唯一,如支付ID、订单ID等。 8. **信道传输机制**: RabbitMQ利用信道进行数据传输,信道是基于TCP连接的虚拟通道,允许复用连接,减少性能开销并提高并发能力。 9. **消息分发策略**: 当有至少一个消费者订阅时,消息会采用循环(round-robin)方式分发给消费者,每条消息只会被一个消费者接收,实现公平负载均衡。 以上是RabbitMQ的关键知识点,包括消息积压处理策略、消息生命周期管理、分布式部署方案、消息传输和确认机制以及消息分发规则。理解并掌握这些概念对于有效地使用和优化RabbitMQ系统至关重要。