什么是消息队列
消息队列是消息中间件的一种实现方式。
什么是消息中间件?
将消息中间件需要理解一下什么是消息和中间件?
消息
消息是指软件对象之间进行交互作用和通讯利用的一种方式。
中间件
百度百科的介绍:
中间件(Middleware)是处于操作系统和应用程序之间的软件,也有人认为它应该属于操作系统中的一部分。
这介绍的我的不是很明白,下面我就讲解一下我的理解,什么是中间件:
首先,中间件 顾名思义 介于两者之间的一个技术:
为了更好的理解中间件技术,我有了这样的一个设想的概念,如图:
信息:这是一个抽象的个体,可以代表一个软件、计算机、或者一个系统等等。
联系:则是进行通信、相互操作等等的抽象
中间件则是将 信息与信息之间的联系践行一种存储或者管理的技术,这就是中间件技术。
根据其应用的不同,中间件分为:
一类是底层中间件,用于支撑单个应用系统或解决一类问题,包括交易中间件(TPM)、应用服务器、消息中间件(MOM)、数据访问中间件(UDA),远程调用中间件(RPC)等等;
另一类是高层中间件,更多的用于系统整合,包括企业应用集成中间件、工作流中间件、门户中间件等,他们通常会与多个应用系统打交道,在系统中层次较高,并大多基于前一类的底层中间件运行。
总结:消息中间件则是将软件与软件之间的交互方式进行存储和管理的一种技术,也可以看做是一种容器。
### 深入理解消息队列:
消息队列,是消息中间件的一种实现方式
下面是消息队列传递服务的模型:
消息队列的传递模型一共有两中形式:
点对点(PTP)
即一个生产者和一个消费者一一对应;
点对点模型的特点:
1,每个消息只有一个消费者
2,发送者和接受者没有时间依赖
3,接受者确认消息接受和处理成功
发布-订阅(Pub/Sub)
发布/ 订阅模式,即一个生产者产生消息并进行发送后,可以由多个消费者进
行接收。
发布-订阅模型特点:
1,每个次消息可以有多个消费者
2,客户只有订阅后才能接收消息(只有建立订阅关系才可以接收消息 )
3,持久订阅和非持久订阅
持久订阅
订阅关系建立后(关系保存在消息中间件中),不管消费者(也就是订阅者)是否在线消息都不会消失。
非持久订阅
建立一种类似长连接关系式的订阅模式,订阅者为了接收消息必须保持一直连接的状态,如果断开连接则丢失消息。
消息队列的分类:
push(推消息模型)
消息生产者将消息发送给消息中间件,消息中间件又将消息推送给消费者。
pull(拉消息模型)
消费者请求 消息中间件接收消息,消费者从消息中间件拉取消息。
特点:
目前使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ等 。
消息队列的应用案例:
1,用户注册
2,日志收集分析
3,数据复制
4,延迟消息发送和暂存
5,消息广播