1.RabbitMQ工作模型
![](https://img.haomeiwen.com/i21117986/f85a6325f3b7693c.png)
这幅图中 :
Producer :生产者
Vhost :虚拟主机
Broker : 可以理解为代理者(代理服务器)
Exchange :交换机
Connection :连接,Tcp长连接
channel: 一个虚拟连接 ,我们可以在保持TCP长连接里去创建和释放Channel ,大大减少了资源的消耗..
不同的Channel 是相互隔离的, 每个Channel 都有自己的编号. 对于每个客户端线程来说 ,channel就没必要共享了,各自用自己的channnel
另外需要的注意的是, Channel 是RabblitMQ 原生API 里面最重要的编程接口, 也就是我们定义交换机/队列/绑定关系,发送消息,消费消息,都调用的是channel接口上的方法.
Consumer:消费者
生产者会和Broker 建立一个长链接 , 生产出一条消息发送到Broker 的一台虚拟主机 ,同时在发消息的同时会指定一台叫交换机.一台交换机会和一个队列进行绑定, 这条消息就会被发送到指定的队列中.
消费者可以主动建立连接获取消息也可以由生产者推送给消费者.大致流程就是这样, 有不对的地方欢迎指正.
Queue :
在Broker 上有一个对象用来存储消息,在Rabbit里这个对象叫做Queue .实际上,RabbitMQ是用数据库来存储消息的,这个数据库跟RabbitMQ一样用Erlang 开发, 名字Mneisa.我们可以在磁盘上找到Mneisa的存储路径:
网友评论