RabbitMQ教程-RabbitMQ简介

echo编辑整理,欢迎转载,转载请声明文章来源。欢迎添加echo微信(微信号:t2421499075) 交流学习。


RabbitMQ简介

RabbitMQ是一款非常热门的消息中间件,是实现了高级消息队列协议(AMQP)的开源消息代理软件。RabbitMQ服务器是用Erlang语言编写的,而群集和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。它 凭借其高可靠、易扩展、高可用及丰富的功能和支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗,受到广大企业的青睐

RabbitMQ的架构模型图如下

  • Producer: 生产者,就是投递消息的一方。
  • Consumer: 消费者,就是接收消息的一方。
  • Broker: 消息中间件的服务节点
  • Queue: 队列,是RabbitMQ的内部对象,用于存储消息。

RabbitMQ的优点

  • 可靠性。RabbitMQ提供了多种技术可以让你在性能和可靠性之间进行权衡。这些技术包括持久性机制、投递确认、发布者证实和高可用性机制。
  • 灵活的路由。消息在到达队列前是通过交换机进行路由的。RabbitMQ为典型的路由逻辑提供了多种内置交换机类型。如果你有更复杂的路由需求,可以将这些交换机组合起来使用,你甚至可以实现自己的交换机类型,并且当做RabbitMQ的插件来使用。
  • 高可用的队列。在同一个集群里,队列可以被镜像到多个机器中,以确保当其中某些硬件出现故障后,你的消息仍然安全。
  • 多协议。RabbitMQ 支持多种消息协议的消息传递。
  • 支持多种语言。你能想到的编程语言几乎都有与其相适配的RabbitMQ客户端。
  • 可视化管理工具。RabbitMQ附带了一个易于使用的可视化管理工具,它可以帮助你监控消息代理的每一个环节。
  • 追踪。如果你的消息系统有异常行为,RabbitMQ还提供了追踪的支持,让你能够发现问题所在。

RabbitMQ的缺点

  • 系统复杂度提高
  • 数据一致性问题
  • 系统可用性降低

RabbitMQ解决了啥问题

  • 削峰填谷
  • 业务系统在超高并发场景中,由于后端服务来不及同步处理过多、过快的请求,可能导致请求堵塞,严重时可能由于高负荷拖垮Web服务器。我们可以使用MQ来完成部分核心逻辑,让请求堆积在MQ,web服务就可以有效的减轻压力

  • 程序间解耦
  • 不同的业务端在联合开发功能时,常常由于排期不同、人员调配不方便等原因导致项目延期。其实,其根本原因是业务耦合过度。在多系统的交互之间我们加上MQ,能够有效的降低耦合

  • 异步处理
  • 调用第三方系统的时候,由于接口可能超时的问题或者部分核心业务场景,我们可以通过MQ来拆分业务的步骤,让核心步骤在在某个步骤的时候分开执行,用户不需要长时间等待。

  • 数据的最终一致性
  • 最典型的是我们目前分布式系统的普遍应用之后,分布式事务的一直性上的应用。

MQ很多,选择RabbitMQ的理由是啥?

市面上有很多类型的MQ,如:RocketMQ、Kafka、ActiveMQ等,那为什么选用RabbitMQ?

  • 开源、性能优秀、稳定性保障
  • 提供可靠性消息投递模式(confirm)、返回模式(return)
  • 集群模式丰富、表达式配置、HA(高可用)模式、镜像队列模型

来源:https://www.icode9.com/content-4-818751.html

(0)

相关推荐

  • 抽一根烟的时间学会.NET Core 操作RabbitMQ

    原创 青城 青城同学 1周前 什么是RabbitMQ? RabbitMQ是由erlang语言开发的一个基于AMQP(Advanced Message Queuing Protocol)协议的企业级消息 ...

  • (3条消息) RabbitMq安装教程(超详细)

    RabbitMq安装教程 RabbitMq简介 安装准备工具 安装步骤(图文) RabbitMq简介 1.1消息队列中间件简介 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量 ...

  • 万字长文书写RabbitMQ最全见解!以后再也不用到处去搜索了呀!

    典型应用场景 1.跨系统的异步通信 人民银行二代支付系统,使用重量级消息队列 IBM MQ,异步,解耦,削峰都有体现. 2.应用内的同步变成异步 秒杀:自己发送给自己 3.基于Pub/Sub模型实现的 ...

  • RabbitMQ Golang教程(三)

    RabbitMQ Golang教程(三) 什么是发布/订阅? 创建一个队列每个任务只传递给一个工人,做些不同的事,向多个消费者传递一个消息.这就是所谓的"订阅/发布模式". 构建一 ...

  • RabbitMQ Golang教程(二)

    RabbitMQ Golang教程(二) 任务队列 什么是任务队列 ? 把要执行的任务放在队列中.使用较多的任务队列有machiney.Celery.goWorker.YTask.每一个任务队列都有自 ...

  • RabbitMQ Golang教程

    RabbitMQ Golang教程 首先,使用go get安装amqp go get github.com/streadway/amqp 发送 我们将消息发布者(发送者)称为 send.go,将消息消 ...

  • 如何在CenOS下安装RabbitMQ

    如何在CenOS下安装RabbitMQ 因为服务器环境比较复杂.不想搞坏现在的环境.所以决定使用docker的方式进行安装. 获取镜像 #指定版本,该版本包含了web控制页面docker pull r ...

  • 基于RabbitMQ的MQTT使用

    因为公司业务需求用到MQTT,简单记录一下MQTT的部署,以及MQTTBOX的使用.首先需要安装好RabbitMQ,没安装可以参考我之前写的分享在centos7环境下安装RabbitMQ使用MQTT插 ...

  • RabbitMQ 消息 100% 投递的解决方案!

    一.前言 现在大多都使用 MQ 来做系统的异构,来做系统的解耦,系统的的模块相当于寄信者与收信者,MQ 则扮演者邮局的角色.作为一个中转的角色,就需要确保消息的100%投递. 今天我们就来研究一下如何 ...

  • 非常强悍的 RabbitMQ 总结,写得真好!

    前言 RabbitMQ是基于AMQP协议的,通过使用通用协议就可以做到在不同语言之间传递. AMQP协议 核心概念 server:又称broker,接受客户端连接,实现AMQP实体服务. connec ...

  • RabbitMQ消息队列之Windows下安装和部署(一)

    参考文档: https://jingyan.baidu.com/article/ed15cb1bb5c3411be369819d.html https://blog.csdn.net/hzw19920 ...