消息队列(MQ)

1. 分类:

  获取消息方式:A. push(推)方式:优点——可以尽可能快地将消息发送给消费者,缺点——如果消费者处理能力跟不上,消费者的缓冲区可能会溢出;

            B. pull(拉)方式:优点——消费端可以按处理能力进行拉去,缺点——会增加消息延迟;

  能否重复消费:A. 点对点(Queue):不可重复消费;

         B. 发布/订阅(Topic):可重复消费。

2. 特点:

  A. 先进先出(FIFO);

  B. 发布订阅;

C. 持久化;

D. 分布式。

3. 技术组件

  A. RabbitMQ:是使用Erlang语言开发的开源消息队列系统,基于AMQP协议来实现,推拉模式和事务,适合对数据一致性、稳定性和可靠性要求很高的场景,对性能和吞吐量的要求还在其次的场景;

  B. RocketMQ:是阿里开源的消息中间件,它是纯Java开发,支持推拉模式,保证消息顺序,具有高吞吐量、高可用性、适合大规模分布式系统应用的特点;

  C. Kafka:是LinkedIn开源的分布式发布-订阅消息系统,主要特点是基于拉模式来处理消息消费,高吞吐量,适合产生大量数据的互联网服务的数据收集业务;

  D. ActiveMQ:纯Java实现,兼容JMS,可以内嵌于Java应用中;

  E. Redis队列:采用list数据类型实现拉模式,采用lpush/rpush和rpop/lpop实现,阻塞等待采用brpop/blpop命令。

可参考:https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%E4%B8%AD%E9%97%B4%E4%BB%B6

 

 

原文地址:https://www.cnblogs.com/ruhuanxingyun/p/10779761.html

时间: 2024-08-30 17:02:30

消息队列(MQ)的相关文章

转:为什么会需要消息队列(MQ)?

为什么会需要消息队列(MQ)? ########################################################################################## 主要原因是由于在高并发环境下,由于来不及同步处理,请求往往会发生堵塞,比如说,大量的insert,update之类的请求同时到达MySQL,直接导致无数的行锁表锁,甚至最后请求会堆积过多,从而触发too many connections错误.通过使用消息队列,我们可以异步处理请求,从而

C#消息队列(MQ)零基础从入门到实战演练

一.课程介绍 如果您从工作中之听过但未有接触过消息对队列(MQ),如果你接触过一点关于MQ的知识,如果没有这么的多如果的话......,那么阿笨将通过本次<C#消息队列零基础从入门到实战演练>分享课让您对消息队列有一个实质性的了解和认识,达到实际的灵活贯通和运用.本次分享课您将学习到以下知识点: 1.微软MSMQ的基本使用技能以及MSMQ在WCF技术中的运用. 2.企业级RabbitMQ消息队列的两种消费模式(生产消费和发布订阅)的介绍和使用. 3.如何实现RabbitMQ客户端(Client

消息队列一:为什么需要消息队列(MQ)?

为什么会需要消息队列(MQ)? ########################################################################################## 主要原因是由于在高并发环境下,由于来不及同步处理,请求往往会发生堵塞,比如说,大量的insert,update之类的请求同时到达MySQL,直接导致无数的行锁表锁,甚至最后请求会堆积过多,从而触发too many connections错误.通过使用消息队列,我们可以异步处理请求,从而

消息队列MQ

消息队列MQ MQ全称为Message Queue 消息队列(MQ)是一种应用程序对应用程序的通信方法.MQ是消费-生产者模型的一个典型的代表,一端往消息队列中不断写入消息,而另一端则可以读取队列中的消息.这样发布者和使用者都不用知道对方的存在. 生产消费模型: ''' 生产者消费者模式是通过一个容器来解决生产者和消费者的强耦合问题.生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列

【消息队列MQ】各类MQ比较

目前业界有很多MQ产品,我们作如下对比: RabbitMQ 是使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP, SMTP, STOMP,也正是如此,使的它变的非常重量级,更适合于企业级的开发.同时实现了一个经纪人(Broker)构架,这意味着消息在发送给客户端时先在中心队列排队.对路由(Routing),负载均衡(Load balance)或者数据持久化都有很好的支持. Redis 是一个Key-Value的NoSQL数据库,开发维护很活跃,虽然它是一个Key-

消息队列MQ对比

1.ActiveMQ 是Apache下的一个子项目. 类似于ZeroMQ,它能够以代理人和点对点的技术实现队列.同时类似于RabbitMQ,它少量代码就可以高效地实现高级应用场景.RabbitMQ.ZeroMQ.ActiveMQ均支持常用的多种语言客户端 C++.Java..Net,.Python. PHP. Ruby等. 2.RabbitMQ 是使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP, SMTP, STOMP,也正是如此,使的它变的非常重量级,更适合于

消息队列MQ技术的介绍和原理

消息队列技术是分布式应用间交换信息的一种技术.消息队列可驻留在内存或磁盘上,队列存储消息直到它们被应用程序读走.通过消息队列,应用程序可独立地执行--它们不需要知道彼此的位置.或在继续执行前不需要等待接收程序接收此消息.   消息中间件概述 消息队列技术是分布式应用间交换信息的一种技术.消息队列可驻留在内存或磁盘上,队列存储消息直到它们被应用程序读走.通过消息队列,应用程序可独立地执行--它们不需要知道彼此的位置.或在继续执行前不需要等待接收程序接收此消息. 在分布式计算环境中,为了集成分布式应

消息队列MQ】各类MQ比较

目前业界有很多MQ产品,我们作如下对比: RabbitMQ 是使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP, SMTP, STOMP,也正是如此,使的它变的非常重量级,更适合于企业级的开发.同时实现了一个经纪人(Broker)构架,这意味着消息在发送给客户端时先在中心队列排队.对路由(Routing),负载均衡(Load balance)或者数据持久化都有很好的支持. Redis 是一个Key-Value的NoSQL数据库,开发维护很活跃,虽然它是一个Key-

消息队列mq的原理及实现方法

消息队列技术是分布式应用间交换信息的一种技术.消息队列可驻留在内存或磁盘上,队列存储消息直到它们被应用程序读走.通过消息队列,应用程序可独立地执行--它们不需要知道彼此的位置.或在继续执行前不需要等待接收程序接收此消息.   消息中间件概述 消息队列技术是分布式应用间交换信息的一种技术.消息队列可驻留在内存或磁盘上,队列存储消息直到它们被应用程序读走.通过消息队列,应用程序可独立地执行--它们不需要知道彼此的位置.或在继续执行前不需要等待接收程序接收此消息. 在分布式计算环境中,为了集成分布式应

消息队列mq总结(重点看,比较了主流消息队列框架)

转自:http://blog.csdn.net/konglongaa/article/details/52208273 http://blog.csdn.net/oMaverick1/article/details/51331004 https://yq.aliyun.com/articles/25385 https://www.zhihu.com/question/22480085/answer/23106407 http://frank1998819.iteye.com/blog/22788