RabbitMQ

38 阅读2分钟

RabbitMQ是一款基于AMQP(Advanced Message Queuing Protocol,高级消息队列协议)的开源消息中间件,主要用于实现分布式系统中不同组件之间的异步通信。它通过消息队列实现生产者与消费者的解耦,提高系统的灵活性,可扩展性和容错性。 其核心重点如下: 1.核心架构

  • 生产者(Producer):发送消息到RabbitMQ
  • 交换机(Exchange):接收生产者消息,根据路由规则转发到对应队列
  • 队列(Queue):存储消息,支持持久化,限流等特性
  • 消费者(Consumer):从队列获取并处理消息
  • 绑定(Binding):定义交换机与队列之间的关联及路由规则 2.交换机类型
  • Direct:精确度匹配路由键(Routing Key)
    
  • Topic:支持通配符匹配路由键(*匹配一个单词,#匹配多个单词)
    
  • Fanout:无视路由键,将消息广播到所有绑定的队列
    
  • Headers:根据消息头信息进行匹配
    

3.消息特性

  •  持久化:通过设置消息,队列,交换机的持久化属性,确保消息不丢失
    
  •  确认机制:生产者可以通过Publish Confirm机制来确认消息是否送达
    
  •  消费确认:消费者处理完消息后发送ACK确认,确保消息被正确处理
    
  •  优先级:支持消息优先级排序,高优先级消息优先被消费
    

4.高级特性

  •   死信队列:处理无法被正常消费的消息(过期,拒收,队列满)
    
  •   延迟队列:实现消息的定时投递(基于死信机制或插件)
    
  •   消息幂等性:通过消息ID等机制避免重复消费
    
  •   限流:控制消费者的消息处理速度,防止过载
    

5.应用场景:

  • 异步通信:如订单创建后异步发送通知
  • 服务解耦:降低微服务之间的直接依赖
  • 流量削峰:应对秒杀等突发流量场景
  • 日志收集:分布式系统的日志异步归集 RabbitMQ 以其轻量、可靠、灵活的特性,广泛应用于分布式系统中,帮助开发者构建高可用、可扩展的消息通信架构。

编辑分享

如何使用RabbitMQ实现延迟队列?

如何保证RabbitMQ消息的顺序性?

对比下RabbitMQ和Kafka