RabbitMQ小记

一直对RabbitMQ的Exchange的类型有些迷惑,所以在此记录

1 direct类型

说明:一个Queue对应多个消费者,RabbitMQ会将该队列的消息,通过轮询的方式,分配给每一个消费端

假设有一组消费端同时订阅这一个队列,

1 有任意的消费端命中了routingkey,其他消费端即使routingkey不一致,则也可以收到消息

2 没有任何一个消费端匹配routingkey,则所有的都不会收到消息,如果任意的一个消费端匹配了routingkey,其他都消费端都能收到消息,不论是什么routingkey

3 消费端第一次启动的时候,使用通配符匹配routingkey,不能获得消息.

2 topic类型

说明:一个Queue对应多个消费者,每个消费者的routingkey是一样的话,RabbitMQ会将该队的消息,通过轮询的方式,分配给客户端,客户端的上下线不影响消息被消费.该消息只被发送一次

2 fanout类型

说明:

假设有一组消费端同时订阅这一个队列,

1 如果使用以下代码进行队列绑定,则每个消费端都会收到相同的消息.消费端下线重新上线以后,则只会收到最新的消息,该模式就是广播

            var queueName = channel.QueueDeclare().QueueName;
            channel.QueueBind(queue: queueName,
                              exchange: exchane,
                              routingKey: routingkey);

2 如果使用以下代码进行队列绑定,RabbitMQ会将同一个消息,发送到一个消费端,其他消费端不会收到该消息.

                channel.QueueDeclare(queue: queueName,
                     durable: false,
                     exclusive: false,
                     autoDelete: false,
                     arguments: null);

                channel.QueueBind(queue: queueName,
                                  exchange: exchane,
                                  routingKey: routingkey);

	

发表评论