我觉得学习消息队列的一个很重要的原因,就是为解决实际项目中存在的问题,为什么会用到消息队列中间件呢?这个能够解决什么问题呢?其实只是涉及的领域不一样而已,学习起来也并没有什么困难的吧,从名字可以看出,这个是否和队列这种数据结构相关呢?是否符合先进先出的这种原则的?不知道,慢慢学习。学习完成之后,就会得到答案。
一、MQ是解决什么问题而存在的
之前的数据同步的实现:
1、 在前台系统开放接口
a) 该接口中完成将Redis中的数据删除
2、 后台系统在商品编辑、删除时调用该接口,即可实现商品数据的同步
该方案存在的问题:系统间的耦合度太高了。
耦合度是指:其他团队的版本升级会影响到后端团队的版本升级。
商品的数据已经实现了和前台系统的同步,但是,搜索系统中索引数据没有和后台系统的数据同步,导致,后台系统的商品数据进行了更新,在搜索系统中搜索到的数据是旧的数据,也可以采用之前的方案解决,但是,因为系统间的耦合度太高了,所以不推荐使用该方案,所以需要使用MQ来解决该问题。
二、RabbitMQ介绍
1、RabbitMQ简介
2、AMQP协议
三、安装RabbitMQ
1、下载
下载地址:http://www.rabbitmq.com/download.html
2、Windows下安装
(1)安装Erlang
下载:http://www.erlang.org/download/otp_win64_17.3.exe
注意:安装的时候就直接安装到C盘即可,省去不必要的错误
(2)安装RabbitMQ
(3)启用管理工具
3.1 最好以管理员的身份运行这个窗口,但是我没有用管理员权限,也是可以的
3.2 输入命令:rabbitmq-plugins enable rabbitmq_management
3.3 在浏览器中输入地址查看:http://127.0.0.1:15672/
3.4 使用默认账号登录:guest/ guest,这个就相当于超级管理员账户
(4)添加用户
4.1 单击Admin 菜单
4.2 用户角色 (Tags中设置权限)
4.2.1 超级管理员(administrator)
可登陆管理控制台,可查看所有的信息,并且可以对用户,策略(policy)进行操作。
4.2.2 监控者(monitoring)
可登陆管理控制台,同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)
4.2.3 策略制定者(policymaker)
可登陆管理控制台,同时可以对policy进行管理。但无法查看节点的相关信息(上图红框标识的部分)。
4.2.4 普通管理者(management)
仅可登陆管理控制台,无法看到节点信息,也无法对策略进行管理。
4.2.5 其他
无法登陆管理控制台,通常就是普通的生产者和消费者。
4.3 创建Virtual Hosts
设置权限