消息队列(MQ)
简介:MQ(Message Queue)消息队列就是保存消息的容器,是一个高性能的中间件,应用在异步解耦异步处理、削峰填谷日志处理。
1. 特点
A. 先进先出(FIFO);
B. 发布订阅;
C. 持久化;
D. 分布式部署。
2. 分类
获取消息方式:A. push(推)方式:优点——可以尽可能快地将消息发送给消费者,缺点——如果消费者处理能力跟不上,消费者的缓冲区可能会溢出;
B. pull(拉)方式:优点——消费端可以按处理能力进行拉去,缺点——会增加消息延迟;
能否重复消费:A. 点对点(Queue):不可重复消费;
B. 发布/订阅(Topic):可重复消费。
3. 技术组件
A. RabbitMQ:使用Erlang语言开发的开源消息队列系统,基于AMQP协议实现的,支持推拉模式和事务,适合对数据的一致性、稳定性和可靠性要求很高的场景,对性能和吞吐量的要求在其次的场景,吞吐量5.95w/s;
B. RocketMQ:纯Java开发,是阿里开源的消息中间件,支持推拉模式,可以保证消息顺序,具有高吞吐量、高可用性、适合大规模分布式系统应用的特点,吞吐量11.6w/s;
C. Kafka:是LinkedIn开源的分布式发布-订阅消息系统,主要特点是基于拉模式来处理消息消费,高吞吐量,适合产生大量数据的互联网服务的数据收集业务日志收集和传输,吞吐量17.3w/s;
D. ActiveMQ:纯Java实现,兼容JMS,可以内嵌于Java应用中,是最受欢迎和功能强大的开源消息传递服务器;
E. Redis队列:采用list数据类型实现拉模式,采用lpush/rpush和rpop/lpop实现,阻塞等待采用brpop/blpop命令;
F. ZeroMQ:号称最快的消息队列系统,能够实现高级、复杂的队列。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗