消息队列(Message Queue):“消息队列”是在消息的传输过程中保存消息的容器,分布式应用间交换信息的重要组件,可存在内存或磁盘中,存储消息直到它们被取走。通过消息队列,应用间可以在不知道对方位置的情况下互相通信,并且不用等待。消息队列在应用解耦、异步消息、流量削锋等问题上有着突出贡献,是实现高性能、高可用、可伸缩和最终一致性架构中不可以或缺的一环。
消息队列的主要特点是异步处理,主要目的是减少请求响应时间和解耦。
主要的使用场景就是将比较耗时而且不需要立即生效返回结果的操作,我们把这种操作作为一个消息,放到消息队列中。处理方可以在任何时候去获取并处理这条消息。这里我们只要保证消息的格式不变,消息的发送方和接收处理方都认识这个消息,那么双方就不需要彼此通信,即可以完成一件事。
当然,如果我们使用消息队列的话,也有许多需要注意的点。比如,消息的发送方不需要接收方立即返回处理结果,否则的话只能等待处理结果;比如系统会有短暂的不一致性,发送方不可预知接收方什么时间处理完这个消息等等。
例子:
假设用户在软件中注册,服务端收到用户的注册请求后,它会做这些操作:
1.校验用户名等信息,如果没问题会在数据库中添加一个用户记录
2.如果是用邮箱注册会给你发送一封注册成功的邮件,手机注册则会发送一条短信
3.分析用户的个人信息,以便将来向他推荐一些