rabbitmq学习实践(一)--基础知识学习

rabbitmq学习实践(一)--基础知识学习

Queue

RabbitMQ中的内部对象,用于存储消息。生产者客户端(P)产生消息并投递到Broker中的Exchange(X)中;消费者客户端(C)从Queue中获取消息并消费。

Exchange

结构图中的X,生产者客户端将产生的消息投递到Exchange中,由Exchange将消息路由到Queue中。

  • 五种类型:
    1) Directed Exchange:
    路由键exchange,该交换机收到消息后会把消息发送到指定routing-key的queue中。producer 提交消息的时候会把routing-key 添加到 message header中。routing-key只是一个messgae的attribute。
    2) Default Exchange:
    默认交换机,其name为空字符串,所有queue都默认binding到该交换机上。所有binding到该交换机上的queue,routing-key都和queue的name一样。
    3) Topic Exchange:
    通配符交换机,Directed Exchange升级版,消息将根据设置的routing-key发送到一个或多个与此交换机绑定到queue中,routing-key中可以包含特殊字符:”_”匹配一个单词;”#”或”*”匹配多个单词和路径,路径之间通过”.”隔开。
    4) Fanout Exchange:
    扇形交换机,此交换机会将消息发送到所有binding到该交换机上的queue中。用来做广播最好。所有该exchagne上指定的routing-key都会被ignore掉。
    5) Header Exchange
    设置Header Attribute参数类型的交换机;此交换机根据消息头中的属性来路由到指定的queue,可指定多个路由标准。相较于topic exchange,此类交换机可支持更多的数据类型。消息头中除了有指定的关联参数字典,还有一个名为”x-match”的属性,当其值为”all”时,表示消息必须带有所有指定头属性才能匹配;当其值为”any”时,表迷宫只需要有一个指定的头属性技能匹配。

Binding

exchange和queue通过routing-key关联,这两者之间的关系是就是binding。绑定的依据为routing-key

Broker(虚拟主机)

Broker = Exchange + Queue + Binding

SpringBoot + RabbitMQ实践

此Demo创建了一个topic exchange为交换机的简单消息交换结构。
项目地址如下:
http://gitlab.ximalaya.com/yzy199391/practice.springboot.demos