转自:http://www.bjpowernode.com/hot/1498.html
https://www.cnblogs.com/blacksmith4/p/13407456.html
先看下RabbitMQ的基本架构
1.简单队列模式
不用显示声明交换机,只需声明一个队列
生产者指定队列名发送消息给MQ,然后会有一个默认的交换机将消息转发给这个队列。
消费者负责监听这个队列,一有消息就会得到通知做出响应。
2.工作队列模式(Work queues)
和简单队列模式基本一样,不过有一点不同,该模式有多个消费者在监听队列。
RabbitMQ会以轮询的方式将消息发给多个消费者确保一条消息只会被一个消费者消费
3.发布订阅模式(Publish/subscribe)
和上面2种模式默认提供交换机不同的是,该模式需要显示声明交换机,
然后可以创建多个队列和这个交换机进行绑定。
生产者发消息给mq时需要指定交换机,然后交换机将消息转发给与自己绑定的所有队列
消费者监听指定的队列获得消息。每个队列可以有多个消费者监听,同样也是以轮询的机制发给消费者。
4.Routing 模式
和发布订阅模式不同的是,队列绑定交换机时需要指定一个routingkey
那么生产者发送消息时不仅需要指定交换机还需要指定routingkey
这样的话交换机就会把消息转发给跟自己绑定并且routingkey相匹配的队列
5.Topic模式
和Routing模式唯一的不同就是可以设置带有通配符进行模糊匹配的routingkey
6.heard模式
和Routing模式的不同就是取消了routing 使用键值对的方式作为routing
几个概念说明:
Broker:它提供一种传输服务,它的角色就是维护一条从生产者到消费者的路线,保证数据能按照指定的方式进行传输,
Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列。
Queue:消息的载体,每个消息都会被投到一个或多个队列。
Binding:绑定,它的作用就是把exchange和queue按照路由规则绑定起来.
Routing Key:路由关键字,exchange根据这个关键字进行消息投递。
vhost:虚拟主机,一个broker里可以有多个vhost,用作不同用户的权限分离。
Producer:消息生产者,就是投递消息的程序.
Consumer:消息消费者,就是接受消息的程序.
Channel:消息通道,在客户端的每个连接里,可建立多个channel.