陋室铭
永远也不要停下学习的脚步(大道至简至易)

posts - 2169,comments - 570,views - 413万

在百度百科中,消息队列是这么解释的:“消息队列”是在消息的传输过程中保存消息的容器。

这个解释中的“消息”指的是在两台计算机间传送的数据单位。消息可以非常简单,例如只包含文本字符串;也可以更复杂,可能包含嵌入对象。消息被发送到队列中。

“消息队列”是在消息的传输过程中保存消息的容器。消息队列管理器在将消息从它的源中继到它的目标时充当中间人。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。

 

平常在工作中,我们也常用消息队列,比如kafka、rabbitmq等,大多数公司基本上都有在用,当然也有使用redis来模拟消息队列的,当然那是不建议的方式。

 

下面根据我平常使用的场景以及网上的资料大体说下消息队列的常用场景。

消息队列的主要特点是异步处理,主要目的是减少请求响应时间和解耦。

主要的使用场景就是将比较耗时而且不需要立即生效返回结果的操作,我们把这种操作作为一个消息,放到消息队列中。处理方可以在任何时候去获取并处理这条消息。这里我们只要保证消息的格式不变,消息的发送方和接收处理方都认识这个消息,那么双方就不需要彼此通信,即可以完成一件事。

 

当然,如果我们使用消息队列的话,也有许多需要注意的点。比如,消息的发送方不需要接收方立即返回处理结果,否则的话只能等待处理结果;比如系统会有短暂的不一致性,发送方不可预知接收方什么时间处理完这个消息。当然,实际生产中还是有需要地方允许这些比如的,所以消息队列现在是异常的火爆。

 

下面举一个网上的例子(自我感觉,非常的生动形象):

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

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

 

但是对于用户来说,注册功能实际只需要第一步,只要服务端将他的账户信息存到数据库中他便可以登录上去做他想做的事情了。至于其他的事情,服务端就可以把其他的操作放入对应的消息队列中然后马上返回用户结果,由消息队列异步的进行这些操作。

posted on   宏宇  阅读(523)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
历史上的今天:
2017-06-05 MVC 公共类App_Code不识别
2011-06-05 .Net读取xlsx文件Excel2007
2009-06-05 C#中Request.ServerVariables详细说明及代理
2009-06-05 Request.Params["ID"](小结)
2007-06-05 Html标签中的Alt和Html
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示