消息队列运行原理
- 生产者:**生产消息,消息被放入消息队列 **
- 消费者:** 一般为后台处理 **
- RabbitMQ:** 管理消息队列,交换机的一个类似数据库的存在 **
- 消息队列:** 存储消息,消息的存储是有交换机分发**
- 交换机:** 消息进入交换机后,然后不同的模式有不同的分发规则**
- 虚拟机:** 相当于一个地址,在这个地址内包括虚拟机,队列,以及它们之间的绑定**
创建一个用户
创建一个VHost
RabbitMQ命令
- 开启服务:net start rabbitmq
- 关闭服务:net stop rabbitmq
- 不需要每次开机开启服务,服务一直处于开启状态的
RabbitMQ的几种模式
-
没有使用交换机
不指定交换机,消息直接发给指定的队列 -
广播交换器(Fanout)
该模式下:交换机会把消息分发给所有的跟自己绑定的消息队列 -
直接交换器(Dirct)
该模式下:消息会一个路由键,消息队列也带有自己的路由键,路由器之分发给匹配的消息队列 -
主题交换器(Topic)
该模式下:路由键的设置可以多元化(good.add),进行匹配时可以带有#,*等 #代表匹配全部,*代表匹配一个。
绑定
交换机与队列进行绑定,可以一对一,一对多,多对多
队列
Queue是用来存储消息的容器,RabbitMQ提供了FIFO(先进先出)的机制,可以缓存消息也可以将消息持久化、临时或者自动删除。
设置为持久化的队列,queue中的消息会在server本地硬盘存储一份,防止系统奔溃后数据丢失。
设置为临时队列,queue中的数据在系统重启之后就会丢失
设置为自动删除的队列,当不存在用户(生产者和消费者)连接到server,队列中的数据会被自动删除。
交换机
RabbitMQ中的交换机本身并不进行消息的存储,主要用做进行消息的转发到指定规则的队列内。
本身也可以进行持久化、临时、自动删除
消息
Message:由Header和Body组成,Header是由生产者添加的各种属性的集合,包括Message是否被持久化、由哪个Message Queue接受、优先级是多少等。而Body是真正需要传输的数据。
有什么错误求大家指出来,我也是菜鸟!!!大家一起成长