RabbitMQ总结
消息中间件 RabbitMQ
MQ全称 Message Queue(消息队列) 分布式系统通信两种方式:直接远程调用 和 借助第三方 完成间接通信优势:应用解耦 异步提速 削峰填谷
劣势:系统可用性降低 系统复杂度提高 一致性问题
应用解耦
系统的耦合性越高,容错性就越低,可维护性就越低。
使用 MQ 使得应用间解耦,提升容错性和可维护性。
应用解耦:提高系统容错性和可维护性
异步提速
提升用户体验和系统吞吐量(单位时间内处理请求的数目)。
异步提速:提升用户体验和系统吞吐量
削峰填谷
使用MQ后,可以提高系统稳定性
削峰填谷:提高系统稳定性
既然 MQ 有优势也有劣势,那么使用 MQ 需要满足什么条件呢?
1、生产者不需要从消费者处获得反馈。引入消息队列之前的直接调用,其接口的返回值应该为空,这才让明明下层的动作还没做,上层却当成动作做完了继续往后走,即所谓异步成为了可能。
2、容许短暂的不一致性。
3、确实是用了有效果。即解耦、提速、削峰这些方面的收益,超过加入MQ,管理MQ这些成本。
RabbitMQ 提供了 6 种工作模式:简单模式、work queues、Publish/Subscribe 发布与订阅模式、Routing 路由模式、Topics 主题模式、RPC 远程调用模式(远程调用,不太算 MQ;暂不作介绍)。
很多消息中间件都实现了JMS规范
CentOS7 安装 RabbitMQ
安装依赖
yum -y install gcc glibc-devel make ncurses-devel openssl-devel xmlto perl wget gtk2-devel binutils-devel
yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ kernel-devel m4 ncurses-devel tk tc xz
安装 erlang
erlang 下载地址:
https://www.rabbitmq.com/releases/erlang/
rpm -ivh erlang-19.0.4-1.el7.centos.x86_64.rpm
安装 RabbitMQ
rabbitmq下载
http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-3.6.6-1.el7.noarch.rpm
rpm -ivh socat-1.7.3.2-5.el7.lux.x86_64.rpm
rpm -ivh rabbitmq-server-3.8.9-1.el7.noarch.rpm
上面版本不行,卸载
rpm -qa | grep rabbit
rpm -e rabbitmq-server-3.6.6-1.el7.noarch.rpm
rpm -ivh rabbitmq-server-3.6.6-1.el7.noarch.rpm 可以 erlang 19.0 rabbitmq 3.6.6
开启管理界面及配置
# 开启管理界面
rabbitmq-plugins enable rabbitmq_management
# 修改默认配置信息
vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/ebin/rabbit.app
# 比如修改密码、配置等等,例如:loopback_users 中的 <<"guest">>,只保留guest
启动:
service rabbitmq-server start
service rabbitmq-server restart
guest/guest