1. 什么是消息队列(what)?
“消息”是在两台计算机间传送的数据单位。消息可以非常简单,例如只包含文本字符串;也可以更复杂,可能包含嵌入对象。消息被发送到队列中。“消息队列”是在消息的传输过程中保存消息的容器。消息队列管理器在将消息从它的源中继到它的目标时充当中间人。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。-- 百度百科
官方的不管是什么都是这个样子,总是能把一些简单的东西说的复杂。简单一点:消息队列是一个存放消息的容器,它控制容器中消息的执行顺序。
2. 为什么要使用消息队列 (why)?
传统的程序执行方式是即时、同步、串行的,在某些业务场景下存在并发低、程序响应时间过长。
3. 使用消息队列解决了什么问题 ?
降低了系统的耦合度,提高了系统性能及可用性。
4. 消息队列有什么特性 ?
消息的发布、获取、执行、删除、重发、失败处理、延迟执行、超时控制。
队列的多队列、内存限制、启动、停止、守护。
消息队列可降级为同步执行。
5. 那些场景适用消息队列 ?
允许延后:抢购活动时,先快速的缓存有限的参与人数到消息队列,后续再排队处理实际的抢购业务。
允许异步:业务处理过程中的邮件、短信通知。
允许并行:用户支付成功后,邮件、微信通知。通知的时间不要求先后顺序。
允许失败和重试:强一致性的业务放入核心流程处理。无一致性要求或者最终一致即可的业务放入队列处理。
以上是通过阅读 https://github.com/coolseven/notes/blob/master/thinkphp-queue/README.md 总结下来的,感觉这种方式理解起来比较简单,同时又能有个深刻的印象。如果有错的地方欢迎指正!