我们明白,RabbitMQ是一个生产者消费者模型,生产者和消费者都是客户端.生产者是发送消息,消费者是接收消息.生产者创建消息通常是一个带有一定业务逻辑解构的数据.消费者只会收到消息,不知道生产者是谁,生产者,也不知道消费者是谁.有了上面这些话,我们来看下图,即RabbitMQ的工作流程.
我来说一下上面这个图里面的英文都是什么:
channel:通道,是在Connection之上的一个抽象层,一个tcp连接可以有多个channel,每个channel都是独立的虚拟连接,消息的发送和接收都是基于channel的,通道的作用主要是将消息的读写操作复用道同一个tcp连接上,这样可以减少建立和关闭连接的开销,提高性能.
exchange:作用是路由,起到转发的作用,我们从上面这个图可以看出消息并不是通过exchange来存储的.
Queue:队列,这个才是来存储消息的,exchange只是起到转发的作用,这里说一下,多个消费者可以订阅一个队列,一个消费者也可以订阅多个队列.
Broker就相当于RabbitMQ服务器.