前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >火影推荐程序连载-11RabbitMQ系列随笔——介绍及安装

火影推荐程序连载-11RabbitMQ系列随笔——介绍及安装

原创
作者头像
不会飞的小鸟
修改2020-08-31 10:10:08
1.9K0
修改2020-08-31 10:10:08
举报
文章被收录于专栏:只为你下只为你下

一、RabbitMQ介绍

RabbitMQ是由erlang开发的AMQP(Advanced Message Queuing Protocol)的开源实现。他是高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间性设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,消费者亦然。

RabbitMQ支持多种客户端,如:.net、java、c、php等。支持ajax,在用于在分布式系统中存储转发消息能起到至关重要的作用 ,并且在易用性、扩展性、高可用性等方面也表现不俗。

二、RabbitMQ作用

博主认为RabbitMQ在程序世界中主要起到以下3个至关重要的作用(不足之处望大神斧正)。

1、解耦

举个例子:假如你在网上买了一件商品(这个过程很复杂,我们这里只说部分操作),这时候系统需要通知库存该商品减1。那么这个时候系统可能会调用接口处理这个过程(过程本身没有任何问题),在这个过程中应用系统和库存之间存在了一个较为高的耦合,显然这种高耦合的操作对于一个订单系统来说是不可接受的,频繁的请求可能会导致系统效率极低甚至崩溃。这个时候MQ就能解决我们的问题,我们将订单消息发送给MQ服务队列中,库存系统只需要获取MQ服务队列中的订单信息进行处理,这个时候应用系统和库存之间并没有任何耦合关系。由于MQ异步处理机制可以提应用系统的效率,集群的使用可以解决订单并发问题。

2、异步

首先我们来看一张图(在官网获取)

在下图中,“ P”是我们的生产者,“ C”是我们的消费者。中间的框是一个队列-RabbitMQ代表使用者保留的消息缓冲区。可以看到P把消息发送给hello这个缓冲区,C想多久处理就多久处理。

3、削峰

此削峰不是天龙八部里面的萧峰(^_^)。何为削峰,削峰你可以解读为“流量削峰”、“削峰限流”等。如何削峰

举个例子:我们还是以订单系统为例。假如有一场秒杀活动(这个时候你的系统流量是少有的高峰期),原本你的系统1秒能处理10w条数据,但是在处于流量高峰的时候,系统数据远远不只10w条,这个时候可能造成服务器压力过大、数据处理出现问题等。MQ恰恰可以解决该问题,前面第2点异步也介绍到MQ有一个缓冲区,我们可以利用这个缓冲区做流量削峰处理。我们只需要在业务处理板块做好数据处理限流操作即可。那么有人又要问了如果秒杀人数超过商品人数怎么办。同理也可以使用MQ解决问题,在MQ中我们可以对商品设置一个峰值,只要超过这个峰值,就会提示商品已抢完等信息(这点类似抢红包)。如下图

三、RabbitMQ安装(客户端)

具体安装过程博主在这里不在赘述,说几点注意事项。

  string e =www.qiaoheibpt.com "abc";   //这里e还是使用字符串的留存性,且使用的还是a的地址。证明c分配的内存引用并没有放入常量池替换   Assert.True(www.yachengyl.cn string.ReferenceEquals(a, e));   Assert.False(www.feihongyul.cn string.ReferenceEquals(c, e));   string f www.baihuayl7.cn= "abc" + "abc";   string g www.jintianxuesha.com= a + b;   string h =www.jujinyule.com "abcabc";   //f在编译期间确定,实际还是从常量池中获取   //IsInterned 表示从常量池中获取对应的字符串,获取失败返回null   //a+b实际上是发生了字符串组合运算,内部重新new了一个新的字符串,所以f,g引用地址不同   Assert.False(string.ReferenceEquals(www.xinxingyulep.cn, g));   Assert.True(string.ReferenceEquals(www.baihua178.cn string.IsInterned(www.lecaixuangj.cn), h));   Assert.True(string.ReferenceEquals(www.yixinpt2.cn f,www.pinguo2yl.com h));

1、在安装RabbitMQ之前必须先安装Erlang,没错是要先安装Erlang仔细的朋友可能已经发现,在文章的开头我们已经说过RabbitMQ是由erlang开发,所以要先安装Erlang环境。下载地址和MQ一样。

2、安装完Erlang之后安装MQ(无脑下一步就行)。

3、安装完成之后一定要先激活并且重启。如图

打开上图红框中的应用,依次执行rabbitmq-plugins enable rabbitmq_management、net stop RabbitMQ && net start RabbitMQ命令。

4、MQ默认端口15672、默认用户密码均为guest。

5、如果要建立新的用户,最好设置为Admin权限。

安装成功之后使用http://localhost:15672打开MQ客户端,出现下图证明客户端安装成功

看到这里是不是有一种对MQ豁然开朗的感觉。

下一篇:RabbitMQ系列随笔——.NET MQ实战练习。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、RabbitMQ介绍
  • 二、RabbitMQ作用
    • 1、解耦
      • 2、异步
        • 3、削峰
        • 三、RabbitMQ安装(客户端)
        相关产品与服务
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档