基础名词

  • Exchange: 即消息交换网关,消息生产者将消息发送到Exchange,Exchange负责将消息转发到相应的目标位置。这个目标位置可以是与Exchange绑定的另一个Exchange,也可能是一个Queue。Exchange有四种类型:directfanouttopicheader
    • direct: 生产者生产消息时指定的Routing Key与Queue绑定到Exchange上的Routing Key完全一致。多个Queue可以通过相同的Routing Key绑定到同一个Exchange来达到订阅相同消息的功能。
    • fanout: 这种类型的Exchange会将消息转发到所有与之绑定的Queue上。
    • topic: 这种类型的Exchange会视消息的Routing Key与Queue绑定的Routing Key之间的匹配情况来进行消息的转发。例如消息的Routing Key为X.Y.Z,就会转发给绑定Routing Key为*.Y.*的Queue,但不会转发给绑定Routing Key为*.A.*的Queue。
    • header: 这种类型的Exchange不再按照Routing Key进行路由,而是基于多个属性进行路由,这些属性表示为消息的消息头。
  • Queue: 即消费队列,用于存储消费者待消费的消息。Queue在使用之前必须先声明。
  • binding: Queue获取来自Exchange的消息的前提是Queue必须与Exchange进行绑定。绑定之后,Exchange才可以按照规则将消息路由到指定的Queue中去。如果生产者生产的某条消息,没有与之匹配的Queue可供路由,那么这条消息将被丢弃或者返回生产者。
  • 消息确认: 消息确认代表消费者已经收到或者完成了消息的处理,AMQP已经可以将消息从Queue中移除了。消息确认有两种方式,一种是自动确认,这一般在消费者收到消息时确认消息,另一种是消费者手工确认消息,手工确认消息比较灵活,并且可以防止因为消息处理失败导致的消息丢失。