rabbitmq的学习与搭建
前言
随着系统的用户量增长与业务增长,许多复杂耗时的操作会是系统卡顿或者用户体验差,所以会需要用到异步处理来提升系统的稳健性。
所以需要使用到消息队列了,消息队列目前有很多种,比如ActiveMQ、RabbitMQ、RocketMQ、Kafka。要根据自己的场景选择最合适自己的消息队列,所以我这里是选择了RabbitMQ。下面会详细记录我学习到的内容。
一、认识RabbitMq
RabbitMQ 是一个消息中间件,它接收消息并且转发。
就类似于一个快递站,卖家把快递给到快递公司,快递公司运输到不同的站点,然后通过不同的快递员,送到我们的手上。
MQ也是这样,生产者把消息发给交换机,交换机接收消息,再通过不同的交换机发给对应队列的消费者,消费者就处理掉对应的消息。
为什么要使用RabbitMq?
在我的场景中,由于部分业务计算过多,用户请求比较耗时,某个时间段使用用户多,导致系统进程不够用,从而系统崩溃,新访问的人无法访问网站。所以优化流程,用户正常操作,我们保存基本数据库数据,然后便返回成功结果给用户,并后台发送消息给rabbitmq,编写异步消费者来处理计算。这样系统又能得到正常运行,功能也能正常的使用,同时系统支持的用户量也变大了许多。
概念认识
生产者
产生数据发送消息的程序是生产者
交换机
交换机是 RabbitMQ 非常重要的一个部件,一方面它接收来自生产者的消息,另一方面它将消息推送到队列中。交换机必须确切知道如何处理它接收到的消息,是将这些消息推送到特定队列还是推送到多个队列,亦或者是把消息丢弃,这个得有交换机类型决定
队列
队列是 RabbitMQ 内部使用的一种数据结构,尽管消息流经 RabbitMQ 和应用程序,但它们只能存储在队列中。队列仅受主机的内存和磁盘限制的约束,本质上是一个大的消息缓冲区。许多生产者可以将消息发送到一个队列,许多消费者可以尝试从一个队列接收数据。这就是我们使用队列的方式
消费者
消费与接收具有相似的含义。消费者大多时候是一个等待接收消息的程序。请注意生产者,消费者和消息中间件很多时候并不在同一机器上。同一个应用程序既可以是生产者又是可以是消费者。
二、安装RabbitMq
windows
下载安装包
前往官网下载安装包: RabbitMq官网,下面附上图文教程,建议翻墙下载不然很慢。



版本对应图部分内容如下。
这里选择下载的支持rabbitmq版本的erlang。
如果不想要官网版本的rabbitmq,也可以去github上下载对应版本的rabbitmq。github上往下面拉,每个版本都有assets静态文件下载。
安装步骤
安装erlang
右键管理员身份运行
然后傻瓜式下一步,要记录安装路径,然后在系统环境变量加上安装的路径。



安装rabbitmq
直接双击打开,傻瓜式下一步安装,然后选择安装路径不要带中文就可以了。
主要的是安装可视化管理页面
在安装目录的sbin文件夹下,打开cmd,运行rabbitmq-plugins enable rabbitmq_management安装可是换管理页面。

然后在任务管理器中,重启rabbitmq。访问 http://127.0.0.1:15672,登录默认用户名与密码,guest。默认用户名与密码是相同的。


修改密码

修改可视化页面访问端口与消息传输端口
rabbitmq安装之后,会生成一个目录,找到目录之后,在里面新建一个rabbitmq.config文件,然后贴上一下内容,修改端口重启一下rabbitmq就可以了。
路径:C:\Users\Administrator\AppData\Roaming\RabbitMQ
配置内容,rabbit是消息传递时的端口,management是可视化页面的访问端口。
[{
rabbit,
[ {
tcp_listeners,
[ {"0.0.0.0" ,38001}]
}]
},{
rabbitmq_management,
[ {
listener,
[
{port , 37001},
{ip , "0.0.0.0"},
{ssl,false}
]
}]
}].
重启rabbitmq
windows的安装基本就结束了。
Linux
下载安装包
和windows安装一样,根据自己的Linux系统下载合适的安装包,我的Linux系统是centos7的,所以我下载的rabbitmq与erlang都是支持centos7的。
安装包下载地址:下载地址
参照版本对应表找到匹配的安装包。
版本对应




安装步骤
将下载好的安装包,上传到需安装的linux系统上。
先安装erlang,再安装socat【安装rabbitmq需要socat】,最后再安装rabbitmq。
安装erlang:rpm -ivh erlang-xxx.rpm
安装socat:yum install socat -y
安装rabbitmq:rpm -ivh rabbitmq-server-xxx.el7.noarch.rpm
配置与启动rabbitmq
启动rabbitmq:systemctl start rabbitmq-server
设置rabbitmq开机自启动:systemctl enable rabbitmq-server
安装可视化管理界面:rabbitmq-plugins enable rabbitmq_management
安装可视化管理界面默认端口是15672,使用guest是无法登录的,因为guest只允许本地登录,所以要添加用户。
添加用户:rabbitmqctl add_user admin 123
设置用户角色:rabbitmqctl set_user_tags admin administrator
设置用户虚拟机权限:rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
修改密码
同windows一样,在管理界面可以修改
修改可视化界面访问端口与消息传输端口
在/etc/rabbitmq目录下,创建rabbitmq.conf 文件,添加以下内容。
#默认client端口为5672
listeners.tcp.default=6666
#默认界面管理端口为15672
management.tcp.port=16666
然后前往/usr/lib/rabbitmq//lib/rabbitmq_server-xxx/sbin/下,修改rabbitmq-defaults文件内容。增加以下内容。
#添加配置路径到文件中,保存退出
CONFIG_FILE=/etc/rabbitmq/rabbitmq.conf

然后运行命令重启rabbitmq,即可生效。
重启命令:systemctl restart rabbitmq-server
linux的安装就完成了
目前这篇rabbitmq的搭建就记录到这了。后续讲解实际应用。