消息中间件:全称MessageQueue,主要是用于程序和程序直接通信,异步+解耦。
1、核心作用:
解耦:订单系统-》物流系统
异步:用户注册-》发送邮件,初始化信息
削峰:秒杀、日志处理
2、跨平台 、多语言协作场景
3、分布式事务、最终一致性【消息队列+本地task记录】
4、RPC调用上下游对接,数据源变动->通知下属
当一个系统引入了消息队列以后:
1、原本串行操作的流程改为了并行操作,用户需要等待的时间减少了
2、将各个微服务进行了一定程度的解耦

什么是JMS?
JMS是Java消息服务(Java Message Service), Java平台中关于面向消息中间件的接口协议,所有消息队列的厂商都要 基于JMS协议来提供面向java开发的api使用接口。
说明点:
1、JMS是一种与厂商无关的 API,用来访问消息收发系统消息,它类似于JDBC(Java Database Connectivity)。
2、是由Sun公司早期提出的消息标准,旨在为java应用提供统一的消息操作,包括create、send、receive
3、JMS是针对java的,微软开发了NMS(.NET消息传递服务) 【基于JMS开发的消息队列是和java语言进行绑定的,不适合跨语言】
常见概念:
JMS提供者:连接面向消息中间件的,JMS接口的一个实现,RocketMQ,ActiveMQ,Kafka等等。
JMS生产者(Message Producer):生产消息的服务,可以是java微服务,可以是python代码等。
JMS消费者(Message Consumer):消费消息的服务,可以是java微服务 。
JMS消息:数据对象 。
JMS队列:存储待消费消息的区域。
JMS主题:一种支持发送消息给多个订阅者的机制 JMS消息通常有两种类型:点对点(Point-to-Point)、发布/订阅(Publish/Subscribe) 。
点对点类型的消息:该消息只能被一个消费者消费。
发布/订阅类型的消息:该消息可以同时被所有消费者消费。





