<Excerpt in index | 首页摘要>
*** 感谢阅读这篇博文,欢迎关注与评论!***
原文链接:https://tiantsing.github.io/2019/09/05/1.%E5%88%9D%E8%AF%86RabbitMQ/
- 什么是消息中间件?
- 消息中间件的作用
- RabbitMQ 的安装及简单使用
<The rest of contents | 余下全文>
1.什么是消息中间件?
消息队列中间件 (Message Queue Middleware ,简称为 MQ) 是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。
2.消息中间件的作用
- 解耦:在项目启动之初来预测将来会碰到什么需求是极其困难的。消息中间件在处理过程中间插入了一个隐含的、基于数据的接口层,两边的处理过程都要实现这一接口,这允许你独立地扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束即可。
- 冗余〈存储): 有些情况下,处理数据的过程会失败。消息中间件可以把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险。在把 个消息从消息中间件中删除之前,需要你的处理系统明确地指出该消息己经被处理完成,从而确保你的数据被安全地保存直到你使用完毕。
- 扩展性: 因为消息中间件解耦了应用的处理过程,所以提高消息入队和处理的效率是很容易的,只要另外增加处理过程即可,不需要改变代码,也不需要调节参数。
- 削峰: 在访问量剧增的情况下,应用仍然需要继续发挥作用,但是这样的突发流 并不常见。如果以能处理这类峰值为标准而投入资源,无疑是巨大的浪费 使用消息中间件能够使关键组件支撑突发访问压力,不会因为突发的超负荷请求而完全崩潰。
- 可恢复性: 当系统一部分组件失效时,不会影响到整个系统,消息中间件降低了进程间的稿合度,所以即使处理消息的进程挂掉,加入消息中间件中的消息仍然可以在系统恢复后进行处理。
- 顺序保证: 在大多数使用场景下,数据处理的顺序很重要,大部分消息中间件支持一定程度上的顺序性。
- 缓冲: 在任何重要的系统中,都会存在需要不同处理时间的元素。消息中间件通过 个缓冲层来帮助任务最高效率地执行,写入消息中间件的处理会尽可能快速,该缓冲层有助于控制和优化数据流经过系统的速度。
- 异步通信: 在很多时候应用不想也不需要立即处理消息 消息中间件提供了异步处理机制,允许应用把 些消息放入消息中间件中,但并不立即处理它,在之后需要的时候再慢慢处理。
3.RabbitMQ 的安装及简单使用
RabbitMQ 是由 Erlang 语言编写的 也正因如此 在安装 RabbitMQ 之前需要安装 Erlang 。
1.安装Erlang(以Linux环境下为例)
- 新建文件夹,将 Erlang 与 RabbitMQ 安装到一起,执行如下命令
cd /usr/local/src/ //进入此目录下
mkdir rabbitmq //创建文件夹
cd rabbitmq //进入新创建的文件夹
- 修改 rabbitmq-erlang.repo 文件中的内容:
vi /etc/yum.repos.d/rabbitmq-erlang.repo
内容如下:(可以看出是安装的21x版本的 Erlang)
[rabbitmq-erlang]
name=rabbitmq-erlang
baseurl=https://dl.bintray.com/rabbitmq-erlang/rpm/erlang/21/el/7
gpgcheck=1
gpgkey=https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc
repo_gpgcheck=0
enabled=1
- 安装 Erlang
sudo yum install erlang
- 验证是否安装成功,输入命令:
erl
。
2.安装 RabbitMQ(以Linux环境下为例)
- 将下载的安装包上传到上边创建的rabbitmq目录下,执行如下命令
rpm --import https://www.rabbitmq.com/rabbitmq-signing-key-public.asc
yum install rabbitmq-server-3.6.1-1.noarch.rpm//选择自己的包进行安装
- 常用的 rabbitMQ 命令
启动:systemctl start rabbitmq-server
停止:service rabbitmq-server stop
重启:service rabbitmq-server restart
开机自动启动:systemctl enable rabbitmq-server
查看 rabbitmq-server 状态:rabbitmqctl status
- 设置配置文件
cd /etc/rabbitmq
cp /usr/share/doc/rabbitmq-server-3.4.1/rabbitmq.config.example /etc/rabbitmq/
mv rabbitmq.config.example rabbitmq.config
- 开启用户远程访问
vi /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界面管理工具
rabbitmq-plugins enable rabbitmq_management
service rabbitmq-server restart
可以在本机浏览器输入 http://localhost:15672
访问 rabbitmq 主页,账户 guest
密码 guest
。
- 防火墙开放15672端口
/sbin/iptables -I INPUT -p tcp --dport 15672 -j ACCEPT
注:关闭虚拟机centos的防火墙
一、.对于centos7自带的防火墙的相关指令
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
systemctl status firewalld.service #查看firewall的状态
二、iptables防火墙的相关状态
关闭虚拟机防火墙:
关闭命令: service iptables stop
永久关闭防火墙:chkconfig iptables off
两个命令同时运行,运行完成后查看防火墙关闭状态
service iptables status
1 关闭防火墙: service iptables stop
2 启动防火墙: service iptables start
3 重启防火墙: service iptables restart
4 查看防火墙状态: service iptables status
5 永久关闭防火墙: chkconfig iptables off
6 永久关闭后启用: chkconfig iptables on
- 简单配置 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 启动时查找相关文件的记录,例如:
node : rabbit@macvm
home dir : /var/lib/rabbitmq
config file(s) : (none)
cookie hash : jzIB5AXnFFYHzF/o4qC9sw==
log(s) : /var/log/rabbitmq/rabbit@macvm.log
: /var/log/rabbitmq/rabbit@macvm_upgrade.log
database dir : /var/lib/rabbitmq/mnesia/rabbit@macvm
日志记录显示了各个系统文件对应的位置。