消息队列有哪些 消息队列( 二 )


消息队列有哪些 消息队列

文章插图
常用的消息队列【消息队列有哪些 消息队列】一、redis消息队列和kafka消息队列的比较
1、Redis作为消息队列
Redis的pub-sub模式非常像西式快餐一样,快产快消,全都是因为Redis是使用内存来做存取,所有你生产的消息立马会被消费者一次性全部处理掉,并且没有留下任何痕迹, 同时因为内存总是宝贵的,所以内存上会有限制,当生产者以及消费者上来的时候也会对redis的效率,还有Redis在处理发布和消费big size(10K+的文件)的数据的时候会表现出无法忍受的缓慢
如果有以下场景可以考虑使用Redis作为消息队列:
a、如果你的需求是快产快消的即时消费场景,并且生产的消息立即被消费者消费掉
b、如果速度是你十分看重的,比如慢了一秒好几千万这种
c、如果允许出现消息丢失的场景
d、如果你不需要系统保存你发送过的消息,做到来无影去无踪
e、需要处理的数据量并不是那么巨大
2、KafKa作为消息队列
KafKa的设计精妙,支持分布式,高可用的部署,并且对一个大的队列采用分成多个Partition(分区),来提高消息入队的吞吐量,分而治之的思想. 并且消费的时候支持group的概念,能够支持多个客户端消费同个队列,并且一个group中可以增加consumer的数量来扩展消费的处理量.
KafKa不熟生产者数量的影响,因为吞吐量足够支撑,即使在廉价的单机服务器上也可以有10万每秒的消息传输量,并且消费者是想什么时候消费都可以,消息它就在那里,十分灵活,不用担心来无影去无踪的恐慌.能把消息持久化,并以一定的策略(例如一定时间内删除,或者到达多大容量的时候清空)
当有一下场景的时候你可以考虑使用KafKa作为消息队列:
a、如果你想要稳定的消息队列
b、如果你想要你发送过的消息可以保留一定的时间,并不是无迹可寻的时候
c、如果你无法忍受数据的丢失
d、如果速度不需要那么的快
e、如果需要处理数据量巨大的时候
消息队列原理及选型 消息队列(Message Queue)是一种进程间通信或同一进程的不同线程间的通信方式 。
Broker(消息服务器)
Broker的概念来自与Apache ActiveMQ , 通俗的讲就是MQ的服务器 。
Producer(生产者)
业务的发起方 , 负责生产消息传输给broker
Consumer(消费者)
业务的处理方 , 负责从broker获取消息并进行业务逻辑处理
Topic(主题)
发布订阅模式下的消息统一汇集地 , 不同生产者向topic发送消息 , 由MQ服务器分发到不同的订阅 者 , 实现消息的广播
Queue(队列)
PTP模式下 , 特定生产者向特定queue发送消息 , 消费者订阅特定的queue完成指定消息的接收 。
Message(消息体)
根据不同通信协议定义的固定格式进行编码的数据包 , 来封装业务数据 , 实现消息的传输
点对点模型用于消息生产者和消息消费者之间点到点的通信 。
点对点模式包含三个角色:
每个消息都被发送到一个特定的队列 , 接收者从队列中获取消息 。队列保留着消息 , 可以放在内存 中也可以持久化 , 直到他们被消费或超时 。
特点:
发布订阅模型包含三个角色:
多个发布者将消息发送到Topic , 系统将这些消息传递给多个订阅者 。
特点:
AMQP即Advanced Message Queuing Protocol , 是应用层协议的一个开放标准 , 为面向消息的中间件设计 。消息中间件主要用于组件之间的解耦 , 消息的发送者无需知道消息使用者的存在 , 反之亦然 。AMQP 的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全 。
优点:可靠、通用
MQTT(Message Queuing Telemetry Transport , 消息队列遥测传输)是IBM开发的一个即时通讯协议 , 有可能成为物联网的重要组成部分 。该协议支持所有平台 , 几乎可以把所有联网物品和外部连接起来 , 被用来当做传感器和致动器(比如通过Twitter让房屋联网)的通信协议 。
优点:格式简洁、占用带宽小、移动端通信、PUSH、嵌入式系统
STOMP(Streaming Text Orientated Message Protocol)是流文本定向消息协议 , 是一种为MOM(Message Oriented Middleware , 面向消息的中间件)设计的简单文本协议 。STOMP提供一个可互操作的连接格式 , 允许客户端与任意STOMP消息代理(Broker)进行交互 。

秒懂生活扩展阅读