Rabbitmq的几种工作模式总结
先看下rabbitqmq的基本架构
可以看到rabbitmq包含这几个组件
- 生产者 producer
- 消费者 consumer
- broker 该消息队列进程 就代表这个消息队列 broker里面包含了重要的2个组件
- 一个是交换机:Exchange
- 一个是队列:Queue
下面介绍几种工作模式:
-
简单队列模式
不用显示声明交换机,只需声明一个队列
生产者指定队列名发送消息给mq,然后会有一个默认的交换机将消息转发给这个队列。
消费者负责监听这个队列,一有消息就会得到通知做出响应。 -
工作队列模式(Work queues)
和简单队列模式基本一样,不过有一点不同,该模式有多个消费者在监听队列。
rabbitmq会以轮询的方式将消息发给多个消费者确保一条消息只会被一个消费者消费 -
发布订阅模式(Publish/subscribe)
和上面2种模式默认提供交换机不同的是,该模式需要显示声明交换机,
然后可以创建多个队列和这个交换机进行绑定。
生产者发消息给mq时需要指定交换机,然后交换机将消息转发给与自己绑定的所有队列
消费者监听指定的队列获得消息。每个队列可以有多个消费者监听,同样也是以轮询的机制发给消费者。 -
Routing 模式
和发布订阅模式不同的是,队列绑定交换机时需要指定一个routingkey
那么生产者发送消息时不仅需要指定交换机还需要指定routingkey
这样的话交换机就会把消息转发给跟自己绑定并且routingkey相匹配的队列 -
Topic模式
和Routing模式唯一的不同就是可以设置带有通配符进行模糊匹配的routingkey -
heard模式
和Routing模式的不同就是 取消了routing 使用键值对的方式作为routing
这里注意
设置交换机的时候需要设置交换机的类型 有4种类型分别对应4种需要指定交换机的工作模式