栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

第一篇:RabbitMQ入门

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

第一篇:RabbitMQ入门

RabbitMQ简介 定义

  RabbitMQ是MQ中的一种,MQ(message queue)就是程序员口中常说的消息队列。它在服务与服务的调用过程中加了一层,将原本服务A调用服务B变成服务A将请求打到MQ,服务B自己去MQ拿请求处理(如下图)。

优缺点

  通过生活中的案例来描述mq的优缺点。其中快递小哥是服务A,丰巢就是MQ,收件人是服务B。下面我们假设快递小哥送快递是发送请求,收件人收到快递为响应完成。

优点
  1. 解耦(提高系统容错率及可维护性)
    没有丰巢的情况下,快递小哥尽管打电话通知收件人来取货,最终的快递派送时长取决于收件人(即服务B)。当快递小哥有很多快递要送时(服务A很多请求),却有些收件人因为加班等原因拿不了快件(不能响应服务A的请求),导致了快递派送失败(请求未被响应,造成服务A的不可用)。
    引入丰巢后,不管收件人在哪里,快递小哥只要把快递都放丰巢中就完成了任务,这就实现了快递小哥与收件人的解耦
  2. 异步(提升用户体验及吞吐量)
    没有丰巢的情况下,收件人3因为加班,要快递小哥等二十分钟,那么快递小哥能做的就是等一等,这就会消耗小哥的20分钟时间。
    引入丰巢后,快递小哥把东西放丰巢就可以回家了,收件人3可以回来后在取,这就实现了异步,大大提高程序的效率
  3. 削峰填谷(提高系统稳定性)
    双十一收件人很多快递同时到了,双十一快递小哥很忙,没时间等。
    京东小哥:你马上来A地点那个快递,过时不候,我还有其他快递要送
    顺丰小哥:你马上来B地点那个快递,过时不候,我还有其他快递要送
    天猫小哥:你马上来C地点那个快递,过时不候,我还有其他快递要送
    中通小哥:你马上来D地点那个快递,过时不候,我还有其他快递要送
    。。。
    这个时候对于收件人来说就很难了,取那个都不对,总有快递拿不到。引入丰巢后,小哥们直接吧快递都放快递柜,收件人一次取一点就可以解决问题。这就是削峰填谷。
缺点
  1. 系统可用性降低
    MQ挂掉,全部玩完,丰巢故障门都打不开,所有人都取不了快递。
  2. 消息丢失
    同步调用转异步调用,消息处理失败如何补偿
常见概念
  • broker:接收和发送消息的应用
  • virtual host:可以理解为MySQL中的数据库,想要操作需要赋予对应的权限,基于多租户与安全考虑的。一个broker可以创建多个v host
  • Connection:pushlisher/consumer 和broker建立的TCP连接
  • channel:channel是connection内建立的逻辑连接,可以建立多个。mq会接收很多请求,一个请求使用一个connection显然是不合理的,因此有了channel,多线程情况下,每个线程的channel是完全隔离的。channel通过AMQP method能够识别channel id的能力,可以很轻松的被客户端与broker识别
  • Exchange:消息最早进入的一个组件,根据分发规则,查询表中对应的routing key,将消息推送到queue中去。常见类型有direct点对点,topic发布订阅
  • queue:队列
  • binding:exchange与queue之间的桥梁,binding中可以包含routing key。binding信息被保存到exchange中的表中,用于消息的分发
RabbitMQ安装 软件准备

百度网盘:Linux安装包地址

安装二郎神
rpm -ivh erlang-18.3-1.el7.centos.x86_64.rpm
安装RabbitMQ
rpm -ivh socat-1.7.3.2-1.1.el7.x86_64.rpm -force -nodeps

rpm -ivh rabbitmq-server-3.6.5-1.noarch.rpm -force -nodeps
开启管理页面,配置默认用户
# 开启管理界面
rabbitmq-plugins enable rabbitmq_management

# 修改默认配置信息
vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/ebin/rabbit.app
启动RabbitMQ
service rabbitmq-server start # 启动服务
service rabbitmq-server stop # 停止服务
service rabbitmq-server restart # 重启服务

启动服务后,浏览器输入ip+端口号就可以看到如下页面了。

注意事项

cd /usr/share/doc/rabbitmq-server-3.6.5/

cp rabbitmq.config.example /etc/rabbitmq/rabbitmq.config

如果web控制台无法正常访问考虑安装是否成功以及是防火墙的原因
关闭防火墙,命令是:systemctl stop firewalld

ecs放开15672端口
思维导图

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/888485.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号