- 什么是消息中间件?
- 消息中间件的作用
- RabbitMQ 的安装及简单使用
1.什么是消息中间件?
消息队列中间件 (Message Queue Middleware ,简称为 MQ) 是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。
2.消息中间件的作用
- 解耦:在项目启动之初来预测将来会碰到什么需求是极其困难的。消息中间件在处理过程中间插入了一个隐含的、基于数据的接口层,两边的处理过程都要实现这一接口,这允许你独立地扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束即可。
- **冗余〈存储)**: 有些情况下,处理数据的过程会失败。消息中间件可以把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险。在把 个消息从消息中间件中删除之前,需要你的处理系统明确地指出该消息己经被处理完成,从而确保你的数据被安全地保存直到你使用完毕。
- 扩展性: 因为消息中间件解耦了应用的处理过程,所以提高消息入队和处理的效率是很容易的,只要另外增加处理过程即可,不需要改变代码,也不需要调节参数。
- 削峰: 在访问量剧增的情况下,应用仍然需要继续发挥作用,但是这样的突发流 并不常见。如果以能处理这类峰值为标准而投入资源,无疑是巨大的浪费 使用消息中间件能够使关键组件支撑突发访问压力,不会因为突发的超负荷请求而完全崩潰。
- 可恢复性: 当系统一部分组件失效时,不会影响到整个系统,消息中间件降低了进程间的稿合度,所以即使处理消息的进程挂掉,加入消息中间件中的消息仍然可以在系统恢复后进行处理。
- 顺序保证: 在大多数使用场景下,数据处理的顺序很重要,大部分消息中间件支持一定程度上的顺序性。
- 缓冲: 在任何重要的系统中,都会存在需要不同处理时间的元素。消息中间件通过 个缓冲层来帮助任务最高效率地执行,写入消息中间件的处理会尽可能快速,该缓冲层有助于控制和优化数据流经过系统的速度。
- 异步通信: 在很多时候应用不想也不需要立即处理消息 消息中间件提供了异步处理机制,允许应用把 些消息放入消息中间件中,但并不立即处理它,在之后需要的时候再慢慢处理。
3.RabbitMQ 的安装及简单使用
RabbitMQ 是由 Erlang 语言编写的 也正因如此 在安装 RabbitMQ 之前需要安装 Erlang 。
安装Erlang(以Linux环境下为例)
新建文件夹,将 Erlang 与 RabbitMQ 安装到一起,执行如下命令
1 | cd /usr/local/src/ //进入此目录下 |
修改 rabbitmq-erlang.repo 文件中的内容:
1 | vi /etc/yum.repos.d/rabbitmq-erlang.repo |
内容如下:(可以看出是安装的21x版本的 Erlang)
1 | [rabbitmq-erlang] |
- 安装 Erlang验证是否安装成功,输入命令:
1
sudo yum install erlang
erl
。
安装 RabbitMQ(以Linux环境下为例)
将下载的安装包上传到上边创建的rabbitmq目录下,执行如下命令
1
2rpm --import https://www.rabbitmq.com/rabbitmq-signing-key-public.asc
yum install rabbitmq-server-3.6.1-1.noarch.rpm//选择自己的包进行安装常用的 rabbitMQ 命令
1
2
3
4
5启动:systemctl start rabbitmq-server
停止:service rabbitmq-server stop
重启:service rabbitmq-server restart
开机自动启动:systemctl enable rabbitmq-server
查看 rabbitmq-server 状态:rabbitmqctl status设置配置文件
1
2
3cd /etc/rabbitmq
cp /usr/share/doc/rabbitmq-server-3.4.1/rabbitmq.config.example /etc/rabbitmq/
mv rabbitmq.config.example rabbitmq.config开启用户远程访问
1
2
3
4
5vi /etc/rabbitmq/rabbitmq.config
%% Uncomment the following line if you want to allow access to the
%% guest user from anywhere on the network.
%% {loopback_users, []} //注意要去掉后面的逗号。开启web界面管理工具
1
2rabbitmq-plugins enable rabbitmq_management
service rabbitmq-server restart可以在本机浏览器输入
http://localhost:15672
访问rabbitmq
主页,账户guest
密码guest
。防火墙开放15672端口
1
/sbin/iptables -I INPUT -p tcp --dport 15672 -j ACCEPT
注:关闭虚拟机centos的防火墙
1 | 一、对于centos7自带的防火墙的相关指令 |
- 简单配置 RabbitMQ
- 添加自定义用户名为 “admin” 以及密码为 “123456” 的管理员账号: 执行命令
rabbitmqctl add_user admin 123456
。
给 admin 账号设置为管理员:执行命令rabbitmqctl set_user_tags admin administrator
。
给 admin 账号授权:执行命令rabbitmqctl set_permissions -p / admin “.“ “.“ “.*”
。 - 查看 admin 账户的权限: 执行命令
rabbitmqctl list_user_permissions admin
。
日志文件以及配置文件的位置
日志文件在:$RABBITMQ_LOG_BASE/$RABBITMQ_NODENAME.log
下面,一般$RABBITMQ_LOG_BASE=$RABBITMQ_HOME/var/log/rabbitmq
。一般默认日志文件会在/var/log/rabbitmq文件下.
该日志文件的开始部分记录了rabbitmq 启动时查找相关文件的记录,例如:
1 | node : rabbit@macvm |
日志记录显示了各个系统文件对应的位置。
GitHub IssuesGitHub Discussions