概念
什么是rabbitmq?
RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种,主要是为了实现系统之间的双向解耦。用人话来说,就是发消息和接收消息
要它有什么卵用?
能够降低系统之间的耦合,并且在分布式领域中转发存储消息,可作为一个中间存储介质,角色类似于CPU的L2缓存
业界中各种消息队列有什么区别?
名词解析
-
Virtual Host:
包含若干个Exchange和Queue,表示一个节点;Vhost之间相互完全隔离,不同Vhost之间无法共享Exchange和Queue。因此Vhost之间数据无法共享和分享。如果要实现这种功能,需要Vhost之间手动构建对应代码逻辑
-
**Exchange(交换机): **
接受客户端发送的消息,并根据Binding将消息路由给服务器中的队列,只做交换消息,存储功能交由queue实现,Exchange分为direct, fanout, topic三种。
- direct:转发消息到routigKey指定的队列
- topic:按规则转发消息(最灵活)
- headers:(这个还没有接触到)
- fanout:转发消息到所有绑定队列
Exchange的绑定功能,可以绑定queue,也可以绑定Exchange。这个看具体业务了。
如果绑定数据,需要在分发或者重新被分派,使用To Exchange绑定。如果要被直接处理,使用queue绑定。
如果Exchange绑定了Queue,如果Route Key不对,也会导致数据不可达,被丢掉。(一个数据可以被Queue处理,需要Exchange绑定Queue,并且在Message发送的时候,Route Key 与绑定的Key相等。) -
Binding: 连接Exchange和Queue,包含路由规则。
-
Queue: 消息队列,存储还未被消费的消息。
队列的属性:
- 持久性:如果启用,队列将会在server重启前都有效。
- 自动删除:如果启用,那么队列将会在所有的消费者停止使用之后自动删除掉自身。
- 惰性:如果没有声明队列,那么在执行到使用的时候会导致异常,并不会主动声明。
- 排他性:如果启用,队列只能被声明它的消费者使用。
- Message: Header+Body
- Channel: 通道,执行AMQP的命令;一个连接可创建多个通道以节省资源。
搭建RabbitMQ服务
- 在win7下搭建
先去rabbitMQ官方网站,安装 Erlang,然后安装rabbitmq-server,相比于linux,windows下就是傻瓜化,安装完毕后,直接启动rabbitmq-server服务,即可
Paste_Image.png
然后在浏览器访问:http://127.0.0.1:15672/ 即可访问rabbitmq的Web管理界面,linux下需要手动安装,详见下方
- 在ubuntu下搭建
本节主要简要总结rabbitmq的入门知识与概念
网友评论