首页 > 其他分享 >RabbitMQ 01 概述

RabbitMQ 01 概述

时间:2023-03-19 22:12:54浏览次数:57  
标签:01 Exchange 队列 RabbitMQ Host 概述 消息 组件

什么是消息队列

进行大量的远程调用时,传统的Http方式容易造成阻塞,所以引入了消息队列的概念,即让消息排队,按照队列进行消费。

它能够将发送方发送的信息放入队列中,当新的消息入队时,会通知接收方进行处理,一般消息发送方称为生产者,接收方称为消费者

这样所有的请求,都可以丢到消息队列中,再由消费者取出,不再是直接连接消费者的形式了,而是加了一个中间件,这是一种很好的解耦方案。并且在高并发的情况下,由于消费者能力有限,消息队列也能起到一个削峰填谷的作用,堆积一部分的请求,再由消费者来慢慢处理,而不会像直接调用那样请求蜂拥而至。

消息队列组件

ActiveMQ、RabbitMQ、RocketMQ、Kafka是目前主流的消息队列组件。它们的特点如下:

综合以上因素,这里选择RabbitMQ作为消息队列组件进行演示。原因如下:

  • 吞吐量虽然不高,但中小型项目完全足够。
  • 时效性强。延迟达到微妙级别,较同类产品延迟最低。
  • 可用性强。提供了完善的高可用实现机制。
  • 可靠性强。基本不会丢包。
  • 并发能力强。基于Erlang开发,提供了丰富的交换机功能,性能好、延时低。
  • 开源免费。没有使用成本,且社区活跃度高,产品稳定。

消息队列组件的功能和实现是大同小异的,学习好一个组件就可以做到一通百通,而且还有Spring Cloud Stream这样的消息队列连接组件,可以屏蔽各消息队列组件的差异性,使用统一的标准调用消息队列组件。

所以,想要掌握消息队列,从RabbitMQ入手是一个比较好的选择。

RabbitMQ

官方网站:https://www.rabbitmq.com

RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。

Rabbit科技有限公司开发了RabbitMQ,并提供对其的支持。

  • 起初,Rabbit科技是LSHIFT和CohesiveFT在2007年成立的合资企业。
  • 2010年4月被VMware旗下的SpringSource收购。
  • RabbitMQ在2013年5月成为GoPivotal的一部分。

其特点如下:

  • 拥有数万计的用户,是最受欢迎的开源消息队列之一,从T-Mobile到Runtastic,RabbitMQ在全球范围内用于小型初创企业和大型企业。
  • 轻量级,易于在本地和云端部署,它支持多种消息协议。
  • 可以部署在分布式和联合配置中,以满足大规模、高可用性要求。
  • 在许多操作系统和云环境中运行,并为大多数流行语言提供了广泛的开发者工具

运行过程:

  • 生产者(Publisher):生产消息的终端。
  • 信道(Channel):服务端和客户端连接都会使用一个Channel,再通过Channel去访问到RabbitMQ服务器。这里的通信协议不是http,而是amqp协议。
  • 虚拟主机(Virtual Host):类似于环境隔离,不同环境都可以单独配置一个Virtual Host,每个Virtual Host可以包含很多个Exchange和Queue,每个Virtual Host相互之间不影响。
  • 交换机Exchange):根据请求,转发给相应的消息队列,每个队列都可以绑定到Exchange上,这样Exchange就可以将数据转发给队列了,可以存在很多个,不同的Exchange类型可以用于实现不同消息的模式。
  • 消息队列(Queue):消息队列本体,生产者所有的消息都存放在消息队列中,等待消费者取出。
  • 消费者(Consumer):消费消息的终端。

标签:01,Exchange,队列,RabbitMQ,Host,概述,消息,组件
From: https://www.cnblogs.com/codesail/p/17234523.html

相关文章

  • RabbitMQ 02 安装
    由于现在Docker的流行,这里使用Docker进行安装。执行如下命令。dockerrun-d--restartalways--namerabbit-eRABBITMQ_DEFAULT_USER=admin-eRABBITMQ_DEFAULT_P......
  • JAVA -01(简单知识介绍)
    JAVA-01前期准备介绍1972年C诞生【两大问题:指针;内存管理】1982年C++诞生【面向对象;兼容C;图形领域和游戏,但是更复杂】1995年JAVA诞生【没有指针没有内存管理;面向对象......
  • Activiti7 基础篇 介绍及概述
    一、工作流介绍1.1概念工作流(Workflow),就是通过计算机对业务流程自动化执行管理。它主要解决的是“使在多个参与者之间按照某种预定义的规则自动进行传递文档、信息或......
  • Linux下安装RabbitMQ
     1.文件上传将文件上传到/usr/local/rabbitmq目录下(如果没有rabbitmq文件夹,自己手动创建一个)mkdirrabbitmq2.安装文件(分别按照顺序安装)rpm-ivherlang-21.3-1.el7......
  • CF1801G A task for substrings
    题面传送门卡常的出题人什么时候似啊?如果\(l=1,r=|t|\),那么就是蠢得不能再蠢的问题:直接扔到AC自动机上跑匹配就好了,可以做到\(O(\sum|s|+|t|)\)。现在询问的变成了......
  • Xshell-7.0.0122r 记录
    通过__WriteInfoAppLog定位关键函数voidcheck_447BA0(){//[COLLAPSEDLOCALDECLARATIONS.PRESSKEYPADCTRL-"+"TOEXPAND]isactive_5252DC=sub_448470(d......
  • 2013.11 文心一言
    3月16日,百度推出新一代大语言模型文心一言(ERNIEBot),即日起开启测试,同时宣布已有超650家伙伴加入文心一言生态,成为国内第一个发布类ChatGPT产品的互联网大厂。文心一言能做......
  • Rabbitmq
    一、消息队列的概念及应用场景什么是消息队列消息是在不同应用间传递的数据。这里的消息可以非常简单,比如只包含字符串,也可以非常复杂,包含多个嵌套的对象。消息队列(Messa......
  • 05-逻辑仿真工具VCS-详解01
    VerilogSimulationEventQueue主要了解VCS是如何处理交给它的代码的Verilog的仿真事件队列,介绍VCS如何处理交给它的代码。VCS是Synopsys公司的,支持多种语言。1.Verilo......
  • P4343 [SHOI2015]自动刷题机
    https://www.luogu.com.cn/problem/P4343 #include<iostream>usingnamespacestd;constintN=1e5+2;#defineintlonglongconstintinf=1e15;inta[N],n......