
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
消息队列技术的应用在许多软件开发项目中都是非常常见的一个编程技术,下面我们就通过案例分析来了解一下,消息队列技术基本概念与原理分析。
一、再谈消息队列的应用场景
异步处理:例如短信通知、终端状态推送、App推送、用户注册等
数据同步:业务数据推送同步
重试补偿:记账失败重试
系统解耦:通讯上下行、终端异常监控、分布式事件中心
流量消峰:秒杀场景下的下单处理
发布订阅:HSF的服务状态变化通知、分布式事件中心
高并发缓冲:日志服务、监控上报
但是,我们对消息队列的底层技术和原理还是不了解,那么我们马上开始吧…
二、消息队列的一些基本概念和简单原理
1.Broker
Broker的概念来自与ApacheActiveMQ,通俗的讲就是MQ的服务器。
2.消息的生产者、消费者
消息生产者Producer:发送消息到消息队列。
消息消费者Consumer:从消息队列接收消息。
3.点对点消息队列模型
消息生产者向一个特定的队列发送消息,消息消费者从该队列中接收消息;
消息的生产者和消费者可以不同时处于运行状态。
每一个成功处理的消息都由消息消费者签收确认(Acknowledge)。
4.发布订阅消息模型-Topic
发布订阅消息模型中,支持向一个特定的主题Topic发布消息,0个或多个订阅者接收来自这个消息主题的消息。在这种模型下,发布者和订阅者彼此不知道对方。实际操作过程中,
发布订阅消息模型中,支持向一个特定的主题Topic发布消息,0个或多个订阅者接收来自这个消息主题的消息。在这种模型下,发布者和订阅者彼此不知道对方。实际操作过程中,
必须先订阅,再发送消息,而后接收订阅的消息,这个顺序必须保证。
5.消息的顺序性保证
基于Queue消息模型,利用FIFO先进先出的特性,可以保证消息的顺序性。
6.消息的ACK确认机制
即消息的Ackownledge确认机制,
为了保证消息不丢失,消息队列提供了消息Acknowledge机制,即ACK机制,当Consumer确认消息已经被消费处理,发送一个ACK给消息队列,此时消息队列便可以删除这个消息了。如果Consumer宕机/关闭,没有发送ACK,消息队列将认为这个消息没有被处理,会将这个消息重新发送给其他的Consumer重新消费处理。
7.消息的持久化
消息的持久化,对于一些关键的核心业务来说是非常重要的,启用消息持久化后,消息队列宕机重启后,消息可以从持久化存储恢复,消息不丢失,可以继续消费处理。
8.消息的同步和异步收发
同步:消息的收发支持同步收发的方式。
同时还有另一种同步方式:同步收发场景下,消息生产者和消费者双向应答模式,例如:张三写封信送到邮局中转站,然后李四从中转站获得信,然后在写一份回执信,放到中转站,然后张三去取,当然张三写信的时候就得写明回信地址
消息的接收如果以同步的方式(Pull)进行接收,如果队列中为空,此时接收将处于同步阻塞状态,会一直等待,直到消息的到达。
异步:消息的收发同样支持异步方式:异步发送消息,不需要等待消息队列的接收确认;异步接收消息,以Push的方式触发消息消费者接收消息。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。