文章目录
ActiveMQ消息队列的核心概念
1.什么是MQ消息队列
Message Queue消息队列简称MQ,消息队列从字面的含义来看就是消息的发生和接收保持排队顺序。
消息队列可以简单的理解为把要传输的数据放在队列中一一发送。
**消息:**要传输的数据。
**队列:**先进先出的数据结构。
在消息队列中,数据放到消息队列叫做生产者,从消息队列中获取数据叫做消费者。
消息队列是一种异步的服务通信方式,是分布式系统中重要的组件,主要解决的问题包含:应用解耦、异步消息、流量削锋等问题,实现高可用、高性能、可伸缩和最终一致性的架构。
使用较多的MQ消息队列产品有RocketMQ、RabbitMQ、Kafka、ActiveMQ等等。
2.为什么要使用MQ消息队列
举例生活中的一个例子来解释引入MQ前后的对比:
程序没有接入MQ之前,服务之间需要频繁调用,影响服务端整体性能,接入MQ消息队列后,通过生产和消费机制,可以增大程序的并发量,提高系统的性能。
3.MQ消息队列的应用场景
MQ消息队列的应用场景分为异步处理、应用解耦、流量削锋等等。
3.1.异步处理
异步处理分为三种模式:串行方式、并行方式、异步处理。
以一个场景说明异步处理三种模式的不同之处,场景:用户注册需要执行三个业务逻辑,分布写入用户表、发送邮件以及注册短信的通知。
3.2.应用解耦
以一个场景说明程序接入MQ后应用解耦的场景,场景说明:用户下单后,订单系统调用库存系统完成库存的缩减。
3.3.流量削锋
流量削锋也是一种典型的应用场景,一般应用于高并发时刻,例如秒杀活动,高并发时一般会因为流量过大,导致应用的状态异常,从而影响线上用户的使用,通过MQ消息队列就可以解决此问题。
通过MQ消息队列可以控制请求的流量、缓解短时间内高并发压垮应用系统。
如下图所示,用户的请求首先被写入到消息队列中,由应用系统通过策略读取消息队列中的数据,然后进行处理,用户的请求相当于生产者,程序相当于消费者。