RocketMQ研究

一 关于MQ

1.1 什么是MQ

MQ全称为Message Queue,即消息队列

1.2 MQ应用场景

  1. 任务的异步处理
  2. 应用程序的节解耦合
  3. 日志收集

1.3 关于RocketMQ

RocketMQ是阿里开源的一款非常优秀中间件产品,脱胎于阿里的另一款队列技术MetaQ

二 市面上常用的MQ

ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ(rocketMQ)等

2.1 各个消息中间件的时机应用场景

2.1.1 RocketMQ的优缺点

2.1.1.1 优点
  1. 高可用、高吞吐量,海量消息堆积、低延迟性能高
  2. api与架构设计更加贴切业务场景
  3. 支持顺序、事务消息
  4. 支持消息过滤
  5. 支持重复消费
  6. 支持延迟消息
  7. 支持消息跟踪
  8. 支持集群、负载均衡
  9. 支持制定次数和时间间隔的失败消息重发
    10.单机部署
2.1.1.2 缺点
  1. 生态圈相较差
  2. 消息吞吐量与消息堆积能力不如kafka
  3. 不支持主从自动切换
  4. 只支持java

2.1.2 RabbitMQ的优缺点

2.1.2.1 优点
  1. 支持AMQP协议
  2. 基于erlang语言开发,高并发性能较好
  3. 工作模式较为灵活
  4. 支持延迟消息
  5. 提供较为友好的后台管理页面
  6. 支持单机部署
2.1.2.2 缺点
  1. 不支持水平扩容
  2. 不支持事物
  3. 消息吞吐量差
  4. 当产生消息堆积,性能下降明显
  5. 消息重发机制需要收集设计
  6. 不支持消息重复消费

三 RocketMQ基础

3.1 组成结构

RocketMQ由生产者、消息队列、以及消费者单部分组成,他们之间的交互流程为显示消息队列brokder定时发送自身状态到NameServer,然后消息生产者请求NameServer获取消息队列brokder的地址,然后消息生产者将消息发送到brokder中的消息队列,而消费者Consumer订阅了brokder中的消息队列,通过拉去消息,获的生产者生产的消息;

3.2 RocketMQ 支持 3 种消息发送方式

  1. 同步消息
    消息生产者项broker发送消息,执行的api时同步等待,知道broker服务器返回发送的结果
  2. 异步消息
    消息生产者项broker发送消息时制定消息发送成功以及发送异常的回调方法,调用api后立即返回,生产者发送消息线程不堵塞,消息发送成功与否的回调任务在一个新的线程中执行
  3. 单向消息
    生产者想broker发送消息,执行api时直接返回,不等待返回结果

3.3 RocketMQ 消息结构

RocketMQ的消息包括基础属性和扩展属性两部分:
基础属性:topic + 消息体(即消息的内容 ) + 消息flag
扩展属性: tag(用于消费消息时进行过滤)+keys (Message 索引键)
注意
Message 的基础属性主要包括消息所属主题 topic , 消息 Flag(RocketMQ 不做处理)、 扩展属性、消息体 。

3.4 RocketMQ 消费组有两种消费模式

1)集群模式
一个消费组内的消费者组成一个集群,主题下的一条消息只能被一个消费者消费。
2)广播模式
主题下的一条消息能被消费组下的所有消费者消费。
消费者和broker之间通过推模式和拉模式接收消息,推模式即broker推送给消费者,拉模式是消费者主动从broker 查询消息。

3.5 延迟消息

RocketMQ的延迟消息实现非常简单,只需要发送消息前设置延迟的时间,延迟时间存在十八个等级,调用setDelayTimeLevel()设置 与时间相对应的延迟级别即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值