消息队列(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:号称最快的消息队列系统,能够实现高级、复杂的队列。

 

可参考:Kafka、RabbitMQ、RocketMQ消息中间件的介绍及对比

posted @   如幻行云  阅读(351)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示