消息队列

来源:互联网 发布:手机快捷方式软件 编辑:程序博客网 时间:2024/06/15 13:03

1. 什么是消息队列,什么是消息,什么是队列

“消息队列”是在消息的传输过程中保存消息的容器。

“消息”是在两台计算机间传送的数据单位。消息可以非常简单,例如只包含文本字符串;也可以更复杂,可能包含嵌入对象。消息被发送到队列中。

“消息队列”是在消息的传输过程中保存消息的容器。消息队列管理器在将消息从它的源中继到它的目标时充当中间人。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。

2.  常用消息队列

         redis,  beanstalk, ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ

3. 消息队列能做什么,解决了什么问题

         分布式系统中不可缺的中间件

异步处理:同步,并发,异步概念

应用解藕: 订单系统与库存系统(下单后要通知库存系统)

流量削峰: 秒杀

日志处理:大量日志储存,接收,转发

消息通迅:聊天室

4. 消息模型

4.1 P2P模型

P2P模式包含三个角色:消息队列(Queue),发送者(Sender),接收者(Receiver)。每个消息都被发送到一个特定的队列,接收者从队列中获取消息。队列保留着消息,直到他们被消费或超时

特点:

每个消息只有一个消费者(Consumer)(即一旦被消费,消息就不再在消息队列中)
发送者和接收者之间在时间上没有依赖性,也就是说当发送者发送了消息之后,不管接收者有没有正在运行,它不会影响到消息被发送到队列
接收者在成功接收消息之后需向队列应答成功

场景:

发送的每个消息都会被成功处理的话,那么需要P2P模式

4.2 pub/sub模型

包含三个角色主题(Topic),发布者(Publisher),订阅者(Subscriber) 。多个发布者将消息发送到Topic,系统将这些消息传递给多个订阅者。

特点:

每个消息可以有多个消费者
发布者和订阅者之间有时间上的依赖性。针对某个主题(Topic)的订阅者,它必须创建一个订阅者之后,才能消费发布者的消息。
为了消费消息,订阅者必须保持运行的状态。

场景:

希望发送的消息可以不被做任何处理、或者只被一个消息者处理、或者可以被多个消费者处理的话,那么可以采用Pub/Sub模型

原创粉丝点击