消息的种类与消息队列的处理方式
消息的种类
1.1 按照发送的特点分
- 同步消息
- 异步消息
- 单向消息
举例:
同步消息
我去小吃店要了一套煎饼果子,在门口等了十分钟,煎饼果子好了老板告诉我让我取餐。
异步消息
我去小吃店要了一套煎饼果子,老板告诉我十分钟后就好。我就不用在门口干等着,可以去奶茶店喝杯奶茶、打把游戏,十分钟后去小吃店取餐。
单向消息
我去小吃店要了一套煎饼果子,老板告诉我没有了,你不用等了。
关于消息队列为什么能减少拥堵:
- A去小吃店要了一套煎饼果子,
B去小吃店要了一份臭豆腐,
C去小吃店要了一份烤冷面,
老板拿了一个表格把三个人的需求记录了下来,然后告诉三个人A 10分钟之后来取,B 8分钟之后来取,C 5分钟之后来取。
然后老板安心做小吃,可以把三份小吃的制作合理分配。ABC三人想干什么就去干什么,到了时间就过来取东西。
转载:https://www.cnblogs.com/weifeng1463/p/12889300.html
1)同步消息(可靠同步发送):
同步发送是指消息发送方发出数据后,会阻塞直到MQ服务方发回响应消息。应用场景:此种方式应用场景非常广泛,例如重要通知邮件、报名短信通知、营销短信系统等。
关键代码:SendResult sendResult = producer.send(msg);
2)异步消息(可靠异步发送):
异步发送是指发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。MQ 的异步发送,需要用户实现异步发送回调接口(SendCallback),在执行消息的异步发送时,应用不需要等待服务器响应即可直接返回,通过回调接口接收服务器响应, 并对服务器的响应结果进行处理。应用场景:异步发送一般用于链路耗时较长,对 RT 响应时间较为敏感的业务场景,例如用户视频上传后通知启动转码服务,转码完成后通知推送转码结果等。
关键代码:producer.sendAsync(msg, new SendCallback() {//...});
3)单向(one-way)消息:
单向(Oneway)发送特点为只负责发送消息,不等待服务器回应且没有回调函数触发,即只发送请求不等待应答。此方式发送消息的过程耗时非常短,一般在微秒级别。应用场景:适用于某些耗时非常短,但对可靠性要求并不高的场景,例如日志收集。
单向只发送,不等待返回,所以速度最快,一般在微秒级,但可能丢失
关键代码:producer.sendOneway(msg);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?