RabbitMQ队列模式和交换机的区别

RabbitMQ五种交换机类型,六种队列模式

一、哪五种交换机?

1、Direct exchange.

       a、会根据routingKey 完全匹配成功后才会消费。比如:如果生产一条消息 “我是中国人”,发送到交换机的时候绑定了路由键是:“中国”,则如果要消费的话只有匹配了路由键是“中国”的才能消费。(可以比喻为交换机是 “地球”,路由键是“国家—中国”,消息是“人”,这个消息的身份证是哪个国家的“路由键”那就是只能在这个国家享有权益。)

        b、如果都消费同一个routingKey的话,多个消费者谁先消费到就是谁的

2、Topic exchange.

        a、该模式不仅仅需要exchange和queue绑定还需要和路由键routingKey关联,

        b、模糊匹配模式,比如:两个路由键 animal.dog , animal.dog.eat。如果该队列不仅仅对“dog”的消息感兴趣,同时还对与“dog”相关的消息感兴趣就可以使用topic模式,animal.dog.# 。(支持# 0或多词模糊匹配,*一个词匹配)

        应用:订阅任务,信息分类更新业务

3、Fanout exchange.

        a、该模式不需要路由键routingKey

        b、该模式只需要将queue和exchange绑定就好。一个exchange可以绑定N多个queue,每一个queue都会得到同样的消息

        c、一个queue可以和多个exchange绑定,消费来自不同的exchange的消息

        d、转发消息最快

        应用:群聊功能、全网消息推送功能

4、Headers exchange.

            a、无路由键routingKey的概念

            b、是以 header和message中的消息匹配上才能消费

5、System exchange——其实就是系统默认和direct模式没区别,只不过不需要定义exchange名字而已。

二、六种队列模式

1、hello word 模式(单发送,单接收模式)

2、work模式(工厂模式)

    一个发送端,多个接收端,支持持久化durable,公平消费原则basicQos,消息的可靠性ack=true,false

    a、消息队列durable——true持久化

    b、在消费的时候,由channel.basicAck()在消息处理完成后发送消息false确认单条或true批量确认。

    c、使用了channel.basicQos(1)保证在接收端一个消息没有处理完时不会接收另一个消息,即接收端发送了ack后才会接收下一个消息。在这种情况下发送端会尝试把消息发送给下一个空闲的的接收端。

3、Publish/Subscribe

    一个生产者发送消息到多个消费者

4、routing模式

    发送消息到交换机并且要指定路由key ,消费者需要匹配对路由key才能消费

5、topic模式

    发送消息到交换机并和路由key进行绑定,但该路由key支持模糊匹配,是指成为“一类”消息

6、RPC模式

    此种方式比较高端,我暂时没每学会


    一下附上 arguments 的参数解释

你可能感兴趣的:(RabbitMQ队列模式和交换机的区别)