这是我参与更文挑战的第3天,活动详情查看: 更文挑战 常见的mq产品
rabbitmq简介 rabbitMQ是基于AMQP(Advanced Message Queue)高级消息队列协议的,用二郎神开发(erlang)是一个网络协议,应用层的一个开放标准,基于该协议的客户端和中间件可传递消息,不收客户端,开发语言等的条件限制。
在amqp中规定了上边这些角色,中间框里边的就是消息中间件,Publisher生产者,Consumer消费者,Exchange叫交换机,Routes路由,Queue消息队列。生产者生产消息发送到消息中间件交换机通过路由的规则发送到不同的消息队列,消费者从消息队列里监听拿到消息消费。
RabbitMQ的基础架构如下
RabbitMQ的基本概念
- Broker:RabbitMq的服务用来接受和分发消息。
- Connection:生产者和消费者和Broker之间建立的TCP连接,
- Channel:Channer是在Conection内部建立的逻辑连接
- Virtial host:把AMQP的基本组件划分到一个虚拟的分组中,当多个不同的用户使用同一个RabbitMQ服务的时候,可以划分出很多个vhost,每个用户在自己的Vhost创建路由和消息队列。
- Exchange:消息到达Broker的第一站,根据路由的分发规则匹配routing key ,分发消息到队列上去,常见的类型与。direct,topic,fanout
- Queue:消息存储在这里被消费者消费
- Binding:Exhange和queue之间的虚拟连接binding中有routing key。binding消息被保存到exchange的查询表中,用于message的分发依据
基本流程就是Producer建立TCP的连接Connection与Broker连接,connection中有很多channel小的连接,连接到不同Virtual中的Exchange,Exchange通过Binding的规则发送到Queue中,Consumer跟生产者一样建立连接拿到消息消费。
RabbitMQ的工作模式(www.rabbitmq.com/getstarted.…
最近加班 ,明天写