程序员必知的 RabbitMQ

RabbitMQ 是中小型企业常用的消息中间件,也是互联网公司面试经常问到的技术点,如果你了解并熟悉 RabbitMQ 对于你的面试、实际工作都会有比较大的帮助;本文希望能让更多的开发人员快速了解 RabbitMQ 相关知识点,分享是一种信念,让我们一起努力。

1.   应用场景说明 
2.   理论介绍
3.   重要特性
4.   消息模型
5.   下载安装 基于 Linux 命令
6.   基于 Spring Boot 访问核心 API 说明
7.   简单代码实例
8.   监控管理 Web UI 简单介绍

 

一、应用场景说明

首先我们以实际的用户下单支付场景为例,其业务主流程如下:

用户提交订单 —> 生成订单 —> 发消息(短信&微信推送)—> 支付 —> 回调通知订单支付成功

上面的流程我们可以拆分为两个模块:订单模块和支付模块。在订单模块中主流程为生成订单之前的过程,在支付模块中回调通知订单是用户支付完后,第三方支付渠道(比如微信)通知支付回调网关,支付回调网关调用订单模块的回调接口。

从上述分析我们知道:

  • 发消息如果是同步发送,则会影响主流程业务,比如发送消息慢,则会影响订单服务的性能,考虑到发送消息的状态不是强一致的,所以我们采用异步发送机制。
  • 订单模块和支付模块存在依赖关系,这样就会出现,订单模块的回调通知服务接口修改了,则支付模块的代码也会跟着修改,反之也是一样;还有如果订单服务网络超时等异常了则支付的回调通知网关也势必受到影响,所以我们想办法让其解耦。

而 MQ 正好满足两大特性 异步 + 解耦 ,其中 RabbitMQ 被企业广泛使用。

二、RabbitMQ 理论介绍

RabbitMQ(以下简称 RQ ) 是部署最广泛的开源的消息中间件,由 Erlang 语言开发。

在 RQ 中有几个比较重要的理论概念,我们先简单熟悉下。

1. AMQP

是一种消息传递协议,它要求客户端之间、及和消息中间件之间保持一致的消息进行通信。

2. Connections

访问连接,它是建立在可靠的 TCP 连接之上,比如当客户端断开连接时不立即关闭 TCP 连接。

3. Channels

信道,客户端之间消息通过信道传输,一个 Connection 共享多个信道,它的一个主要作用是避免客户端直接对 TCP 建立和关闭所消耗的系统资源代价,可以看出 RQ 从底层设计时就考虑了高性能的应用。

4. Exchanges

交换机,它指定消息发送到哪个队列;流程是生产者将消息发给Exchange, 然后 Exchange 通过不同的类型(主要包括 fanout 、direct、topic )发送到不同的队列。

5. Queues

队列,存储消息的具体位置。

6. Products

生产者,消息的发送者。

7. Consumers

消费者,它订阅注册到特定队列,队列将消息“推”给消费者进行消息处理。

三、重要特性

为了保证消息的可靠传输,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wanghaoyong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值