• 什么是RabbitMQ?RabbitMQ的作用是什么?


    RabbitMQ是什么?

    RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件

    消息队列是什么

    是一种应用间的异步协作机制

    作用

    以常见的订单系统为例,用户点击【下单】按钮之后的业务逻辑可能包括:扣减库存、生成相应单据、发红包、发短信通知。在业务发展初期这些逻辑可能放在一起同步执行,随着业务的发展订单量增长,需要提升系统服务的性能,这时可以将一些不需要立即生效的操作拆分出来异步执行,比如发放红包、发短信通知等。这种场景下就可以用 MQ ,在下单的主流程(比如扣减库存、生成相应单据)完成之后发送一条消息到 MQ 让主流程快速完结,而由另外的单独线程拉取MQ的消息(或者由 MQ 推送消息),当发现 MQ 中有发红包或发短信之类的消息时,执行相应的业务逻辑。

    通常用作数据解耦的情况,其它常见场景包括最终一致性、广播、错峰流控等等。

    应用场景

    场景说明:用户注册后,需要发注册邮件和注册短信,传统的做法有两种

    1.串行方式:将注册信息写入数据库后,发送注册邮件,再发送注册短信,以上三个任务全部完成后才返回给客户端。 这有一个问题是,邮件,短信并不是必须的,它只是一个通知,而这种做法让客户端等待没有必要等待的东西.

    2.并行方式:将注册信息写入数据库后,发送邮件的同时,发送短信,以上三个任务完成后,返回给客户端,并行的方式能提高处理的时间。

    假设三个业务节点分别使用50ms,串行方式使用时间150ms,并行使用时间100ms。虽然并性已经提高的处理时间,但是,前面说过,邮件和短信对我正常的使用网站没有任何影响,客户端没有必要等着其发送完成才显示注册成功,英爱是写入数据库后就返回.

    3.消息队列 :引入消息队列后,把发送邮件,短信不是必须的业务逻辑异步处理

  • 相关阅读:
    nginx中一个请求匹配到多个location时的优先级问题,马失前蹄了
    2024蓝桥杯每日一题(最短路径)
    微信小程序集成腾讯im,会话列表数据过多(长列表),卡顿问题的解决
    Java 类和对象 详解+通俗易懂
    Android 13.0 SystemUI下拉状态栏时间格式的修改(一)
    leetcode-775:全局倒置与局部倒置
    Nginx学习笔记06——Nginx反向代理
    Osgb转3DTiles工具
    二维数组的最小路径和问题
    【步骤详解】Docker一键部署微服务详细教程
  • 原文地址:https://blog.csdn.net/asdfadafd/article/details/126553565