博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
消息队列的应用场景、为什么要用消息队列
阅读量:5900 次
发布时间:2019-06-19

本文共 888 字,大约阅读时间需要 2 分钟。

hot3.png

知乎: 

 

个人认为消息队列的主要特点是异步处理主要目的是减少请求响应时间和解耦所以主要的使用场景就是将比较耗时而且不需要即时(同步)返回结果的操作作为消息放入消息队列。同时由于使用了消息队列,只要保证消息格式不变,消息的发送方和接收方并不需要彼此联系,也不需要受对方的影响,即解耦和

使用场景的话,举个例子:

假设用户在你的软件中注册,服务端收到用户的注册请求后,它会做这些操作:

  1. 校验用户名等信息,如果没问题会在数据库中添加一个用户记录
  2. 如果是用邮箱注册会给你发送一封注册成功的邮件,手机注册则会发送一条短信
  3. 分析用户的个人信息,以便将来向他推荐一些志同道合的人,或向那些人推荐他
  4. 发送给用户一个包含操作指南的系统通知
  5. 等等……

但是对于用户来说,注册功能实际只需要第一步,只要服务端将他的账户信息存到数据库中他便可以登录上去做他想做的事情了。至于其他的事情,非要在这一次请求中全部完成么?值得用户浪费时间等你处理这些对他来说无关紧要的事情么?所以实际当第一步做完后,服务端就可以把其他的操作放入对应的消息队列中然后马上返回用户结果,由消息队列异步的进行这些操作。

或者还有一种情况,同时有大量用户注册你的软件,再高并发情况下注册请求开始出现一些问题,例如邮件接口承受不住,或是分析信息时的大量计算使cpu满载,这将会出现虽然用户数据记录很快的添加到数据库中了,但是却卡在发邮件或分析信息时的情况,导致请求的响应时间大幅增长,甚至出现超时,这就有点不划算了。面对这种情况一般也是将这些操作放入消息队列(生产者消费者模型),消息队列慢慢的进行处理,同时可以很快的完成注册请求,不会影响用户使用其他功能。

所以在软件的正常功能开发中,并不需要去刻意的寻找消息队列的使用场景,而是当出现性能瓶颈时,去查看业务逻辑是否存在可以异步处理的耗时操作,如果存在的话便可以引入消息队列来解决。否则盲目的使用消息队列可能会增加维护和开发的成本却无法得到可观的性能提升,那就得不偿失了。

转载于:https://my.oschina.net/zjllovecode/blog/1794002

你可能感兴趣的文章
顺序查找,折半查找,二叉排序树的建立,哈希表的建立
查看>>
UESTC 2014 Summer Training #7 Div.2
查看>>
《气场》读书笔记
查看>>
Android NDK开发Crash错误定位
查看>>
ELK + kafka + filebeat +kibana
查看>>
JQuery强化教程 —— jQuery Easing
查看>>
MongoDB的索引
查看>>
[20180619]oradebug peek.txt
查看>>
hdu1087(求最大上升子列和 )
查看>>
Oracle Install
查看>>
会议2.2
查看>>
数据结构化与保存
查看>>
定时器
查看>>
Bootstrap3基础 nav 便签页(横版、竖版)
查看>>
杭电1212--Big Number
查看>>
【AS】使用数组
查看>>
Codeforces Round #546 (Div. 2) C. Nastya Is Transposing Matrices
查看>>
linux 各种格式的压缩/解压文件
查看>>
线性分类器及python实现
查看>>
理解 Linux 的硬链接与软链接
查看>>