消息队列
来源:互联网 发布:手机快捷方式软件 编辑:程序博客网 时间: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模型
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- <>消息队列
- 消息队列
- 小知识及原理图(一)
- [Err] 1054
- Java之StringUtil工具类
- java自动向上转型问题
- Python中文编码问题详解
- 消息队列
- TCP_NODELAY TCP_CORK
- HashMap简单说明
- GO与其它数据库见的id转换
- Android Studio中如何查看获取MD5和SHA1值(应用签名)
- SHELL字符串处理技巧(${}、##、%%)
- Shader编程学习笔记(一)—— 图形硬件简史与可编程管线
- Spyder环境里, 如何导入自己编写的模块?
- UE4中利用【蓝图】设置人物跑了一段后 按下一个键 重回到它原来的起始的位置