服务异步通讯-实用篇-RabbitMQ基础

目录

一、初识MQ

1、同步通讯和异步通讯

2、同步调用存在的问题

3、异步调用可以解决上述问题

二、RabbitMQ快速入门

1.安装RabbitMQ

2.RabbitMQ消息模型

3.导入案例工程

4.入门案例 

4.1代码实现:

4.1.1 publisher实现

 4.1.2consumer实现

5.总结

 三、SpringAMQP

1.什么是SpringAMQP

2.SpringAMQP案例

1.利用SpringAMQP实现HelloWorld中的基础消息队列功能:

 1.消息发送

2.消息接收

3.测试

3.Topic 

 3.1案例编写

 3.2消息发送

3.3消息接收


一、初识MQ

1、同步通讯和异步通讯

同步通讯:在和别人语音聊天时,别人不能再和你进行语音聊天。即只能可以和一个人进行语音聊天

异步通讯:例如微信聊天,你可以同时和多个联系人进行聊天。

2、同步调用存在的问题

1.耦合度高:每次加入新的需求,都要修改原来的代码

2.性能下降:调用者需要等待服务提供者响应,如果调用链过长则响应时间等于每次调用的时间之和。

3.资源浪费:调用链中的每个服务在等待响应过程中,不能释放请求占用的资源,高并发场景下会极度浪费系统资源

4.级联失败:如果服务提供者出现问题,所有调用方都会跟着出问题,如同多米诺骨牌一样,迅速导致整个微服务群故障

3、异步调用可以解决上述问题

异步调用常见实现就是事件驱动模式:

        我们以购买商品为例,用户支付后需要调用订单服务完成订单状态修改,调用物流服务,从仓库分配响应的库存并准备发货。

        在事件模式中,支付服务是事件发布者(publisher),在支付完成后只需要发布一个支付成功的事件(event),事件中带上订单id。

        订单服务和物流服务是事件订阅者(Consumer),订阅支付成功的事件,监听到事件后完成自己业务即可。

        为了解除事件发布者与订阅者之间的耦合,两者并不是直接通信,而是有一个中间人(Broker)。发布者发布事件到Broker,不关心谁来订阅事件。订阅者从Broker订阅事件,不关心谁发来的消息。

 Broker 是一个像数据总线一样的东西,所有的服务要接收数据和发送数据都发到这个总线上,这个总线就像协议一样,让服务间的通讯变得标准和可控。

好处:

  • 吞吐量提升:无需等待订阅者处理完成,响应更快速

  • 故障隔离:服务没有直接调用,不存在级联失败问题

  • 调用间没有阻塞,不会造成无效的资源占用

  • 耦合度极低,每个服务都可以灵活插拔,可替换

  • 流量削峰:不管发布事件的流量波动多大,都由Broker接收,订阅者可以按照自己的速度去处理事件

二、RabbitMQ快速入门

RabbitMQ是基于Erlang语言开发的开源消息通信中间件,官网地址:https://www.rabbitmq.com/

1.安装RabbitMQ

      步骤参考资源中文件

MQ的基本结构:

RabbitMQ中的一些角色:

  • publisher:生产者

  • consumer:消费者

  • exchange个:交换机,负责消息路由

  • queue:队列,存储消息

  • virtualHost:虚拟主机,隔离不同租户的exchange、queue、消息的隔离

2.RabbitMQ消息模型

MQ的官方文档中给出了5个MQ的Demo示例,对应了几种不同的用法:

  • 基本消息队列(BasicQueue)

  • 工作消息队列(WorkQueue)

发布订阅(Publish、Subscribe),又根据交换机类型不同分为三种:

  • Fanout Exchange:广播

  • Direct Exchange:路由

  • Topic Exchange:主题

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

洛杉矶暖男

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

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

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

打赏作者

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

抵扣说明:

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

余额充值