RabbitMQ消息队列---简介以及安装

1.消息队列简介

1.1 什么是消息队列

       消息队列,顾名思义就是用来存放消息的队列,队列的设计原则采用先进先出的方式,就是说一个消息入队,那么他就会先出队。消息队列是一种跨进程的通信机制,用来在不同jvm中传递消息。在分布式系统中,,消息队列起到了很大的作用,达到逻辑解耦以及物理解耦的效果。

1.2 消息队列的作用

消息队列的作用主要有三种,分别是:流量消峰,应用解耦和异步处理。

流量消峰: 流量消峰主要是指将一个程序,或者一个接口的并发数控制在它的并发范围之内,既不让他超过最高的并发数,也不轻易让请求直接失败。

       简单点理解就是:比如一个接口,他的最大并发数为10W,就是说它可以承受10W条请求同时访问,但如果有超过10W条请求同时到达,那么有些请求就会直接失败。如果我们使用了消息队列,我们可以将这些请求缓存起来,将消息队列当成一个缓冲区,让请求分成一段一段的来处理,这样子就可以保证这些请求都尽量能请求成功,但是这也会多花费一些时间。

应用解耦: 在微服务或者分布式系统中,都会有服务调用的情况出现,如果这时候一个服务出现异常,那么相关的业务逻辑操作会受到影响,而信息队列则是在两个服务之间再加一层,以此来达到更大程度上的解耦。

       比如说:一个下单的操作,普遍的逻辑就是生成订单信息,然后减少相关商品的库存。如果减少相关商品的库存这个服务出现异常,需要一些时间来修复,那么下单操作就会出现异常。这时候如果我们使用消息队列来做缓冲,存储我们的减少库存操作的信息,那么下单操作就会成功执行。而当服务恢复正常时,就会执行消息队列中的减少库存操作,来提高系统的可用性。

异步处理: 在微服务架构中,有一些服务需要监听另一个服务的完成情况,然后再继续执行相关的业务逻辑操作。在以往的操作中,常用的方法就是服务A频繁的去访问服务B,看看服务B是否完成了,又或者服务B提供一个相关的提示接口,如果完成了就返回相关提示给服务A,而使用信息队列后,服务A只需要监听消息队列是否返回信息,而不用频繁的去访问服务B和服务B不用多写一个接口。

       比如说:在我们日常的系统软件中,通常会有一个登录成功,然后会发送一个相关的登录信息短信。如果不用信息队列的话,就是:发短信这个服务要经常去监听登录这个服务的操作,看是否登录成功。如果使用了消息队列的话,那就不用管,短信服务只需看消息队列是否会发信息给我,如果有的话就发短信,没有就不管。

1.3 消息队列的分类

ActiveMQ: ActiveM

你可能感兴趣的:(RabbitMQ消息队列,rabbitmq,java,分布式,云原生)