前段时间开发项目需要盒子定时采集数据向后台推送,使用的是RabbitMQ推送,在此记录一下使用过程:
首先去官网下载安装RabbitMQ,因为RabbitMQ的服务端是用Erlang语言写的,如果你的电脑没有安装这个语言,在安装RabbitMQ之前会提示让你先安装Erlang,照办就行:
Erlang下载地址:
https://www.erlang.org/downloads
RabbiMQ下载地址:
https://www.rabbitmq.com/download.html
安装过程没啥注意的,一路next就行,安装好后win10点击“开始”后能找到这样一个文件:
点击展开里面是这样的:
点击一下RabbitMQ Server - start开始服务,是这个亚子的:
我的没有安装在C盘,所以先进入到你的安装目录下的sbin目录,然后输入命令rabbitmq-plugins enable rabbitmq_management,启动后台服务管理,这时你就可以通过浏览器访问http://localhost:15672/进入到RabbitMQ的后台管理,初次进入是这个亚子的:
初次进入用户名和密码都是guest,登录进去后是这样滴:
这其中有几个概念:
1、Channels(信道):我们可以这样理解,产生消息的生产者和消费消息的消费者与RabbitMQ之间通信的通道。信道是建立在TCP连接上的虚拟连接,RabbitMQ在一个TCP连接上建立为多条信道来达到多线程处理的效果,这个TCP连接背多个信道共享,每个线程对应一个信道,信道在rabbit都有唯一的ID ,保证了信道私有性,对应上唯一的线程使用。信道的原理是一条线程一条信道,多条线程多条信道共同使用一条TCP连接。一条TCP连接可以容纳无限的信道,及时每秒造成成千上万的请求也不会造成性能瓶颈。
2、Exchanges(交换机):生产者通过信道将消息发送到交换机,交换机再根据路由键匹配将消息发送到对应的队列,本质是一个路由查询表,虚拟出来的并不真实存在。
交换机是需要再生产者和消费者之间明确指定的,所以我们接下来创建一个交换机,看看有哪些东西需要配置,有什么含义?
点开交换机,创建一个新的交换机:
交换机类型有direct,fanout,topic,header4种,其中:
direct是1:1的匹配,只有当交换机和路由完全匹配上才会将将消息发送到对应的队列中;
fanout是1:n的匹配,这种类型的交换机会将接收到的消息发送到所有的队列中;
topic是一种n:1的模糊匹配,通过通配符满足一定条件就会传送消息到队列中;header不再是通过rounting key和binding key来匹配,消息发送到交换机后,交换机会去除消息包含的header属性来匹配,只有当完全匹配的时候才会传送消息。一般选择默认direct的就行。
创建好交换机之后,再列表中点击进行路由、消息队列的绑定:
在绑定队列之前先确保队列的存在,没有就先去创建一个。
3、Queues(队列):消息的生产者通过信道将消息发送至交换机,交换机通过规则路由匹配到相应的队列,将消息存放在队列中,消费者从队列中取走消息。
创建队列:
创建队列跟创建交换机差不多,在自定义参数里面可以设置队列消息最大数等。
创建好队列后,也有个绑定,队列是绑定交换机,交换机那是绑定队列,所以两处选择其中任一处进行绑定即可,绑定之后是这个样子的:
最后再创建一个用户:
创建成功后,后台管理就算告一段落了,接下来我们通过一个demo看看整个过程,请看RabbitMQ消息推送(二)。