本文目录:
- 1、消息队列(mq)是什么?
- 2、如何使用消息队列
- 3、Kafka,Mq和Redis作为消息队列使用
消息队列(mq)是什么?
是生产者先将消息投递一个叫队列的容器中,然后再从这个容器中取出消息,最后再转发给消费者。
消息队列是 Microsoft 的消息处理技术,它在任何安装 Microsoft Windows 的计算机组合中,为任何应用程序提供消息处理和消息队列功能,无论这些计算机是否在同一个网络上或者是否同时联机。
消息队列网络是能够相互间来回发送消息的任何一组计算机。网络中的不同计算机在确保消息顺利处理的过程中扮演不同的角色。它们中有些提供路由信息以确定如何发送消息,有些保存整个网络的重要信息,而有些只是发送和接收消息。
消息队列的类型介绍:
消息队列目前主要有两种类型:POSIX消息队列以及系统V消息队列,系统V消息队列目前被大量使用。每个消息队列都有一个队列头,用结构struct msg_queue来描述。队列头中包含了该消息队列的大量信息。包括消息队列键值、用户ID、组ID、消息队列中消息数目等等。
消息队列就是一个消息的链表,可以把消息看作一个记录,具有特定的格式以及特定的优先级。对消息队列有写权限的进程可以向消息队列中按照一定的规则添加新消息;对消息队列有读权限的进程则可以从消息队列中读走消息。消息队列是随内核持续的。
如何使用消息队列
安装消息队列。有关管理路由链接和站点入口的说明,请参阅管理消息队列网络。有关 Active Directory 中的消息队列的信息,请参阅管理 Active Directory 中的消息队列。有关管理消息队列计算机上的任务的信息,请参阅管理消息队列计算机。要了解安全性任务(包括管理消息队列对象安全、身份验证和加密),请参阅管理消息队列的安全性。有关管理与配置队列和队列别名的说明,请参阅管理消息队列的队列。有关通讯组列表任务的信息,请参阅管理消息队列的通讯组列表。要了解消息属性(包括设置默认的消息生存时间和清除消息),请参阅管理消息队列的消息。有关创建与管理触发器和规则、修改默认触发器值以及配置群集的消息队列触发器资源的信息,请参阅管理消息队列的触发器。有关查看消息队列事件、外部事务和性能计数器的信息,以及要了解启用消息路由跟踪和测试消息的信息,请参阅监视和测试消息队列。
Kafka,Mq和Redis作为消息队列使用
kafka是个日志处理缓冲组件,在大数据信息处理中使用。和传统的消息队列相比较简化了队列结构和功能,以流形式处理存储(持久化)消息(主要是日志)。日志数据量巨大,处理组件一般会处理不过来,所以作为缓冲层的kafka,支持巨大吞吐量。为了防止信息丢失,其消息被调用后不直接丢弃,要多存储一段时间,等过期时间过了才丢弃。这是mq和redis不能具备的。主要特点如下:巨型存储量: 支持TB甚至PB级别数据。高吞吐,高IO:一般配置的服务器能实现单机每秒100K以上消息的传输。消息分区,分布式消费:能保消息顺序传输。 支持离线数据处理和实时数据处理。Scale out:支持在线水平扩展,以支持更大数据处理量
redis只是提供一个高性能的、原子操作内存键值对,具有高速访问能力,可用做消息队列的存储,但是不具备消息队列的任何功能和逻辑,要作为消息队列来实现的话,功能和逻辑要通过上层应用自己实现。
我们以RabbitMQ为例介绍。它是用Erlang语言开发的开源的消息队列,支持多种协议,包括AMQP,XMPP, SMTP, STOMP。适合于企业级的开发。
MQ支持Broker构架,消息发送给客户端时需要在中心队列排队。对路由,负载均衡或者数据持久化都有很好的支持。
还有ActiveMq,ZeroMq等。功能基本上大同小异。并发吞吐TPS比较,ZeroMq 最好,RabbitMq 次之, ActiveMq 最差。
原文:
【消息队列的使用】的内容来源于互联网,如引用不当,请联系我们修改。
网友留言: