首页 > 其他分享 >RocketMQ 生产端与消费端

RocketMQ 生产端与消费端

时间:2023-07-24 17:56:08浏览次数:42  
标签:负载 消费 队列 发送 粒度 均衡 生产 RocketMQ

参考:

en_oc:https://www.cnblogs.com/enoc/p/rocketmq-so-no-roku.html

田守枝(rebalance):https://cloud.tencent.com/developer/article/1554950

官方文档:https://rocketmq.apache.org/zh/docs/

 

 

发送消息

RocketMQ中定义了如下三种消息通信的方式:

  • SYNC:同步发送,生产端会阻塞等待发送结果;
    • 应用场景:这种方式应用场景非常广泛,如重要业务事件通知。
  • ASYNC:异步发送,生产端调用发送API之后,立刻返回,在拿到Broker的响应结果后,触发对应的SendCallback回调;
    • 应用场景:一般用于链路耗时较长,对 RT 较为敏感的业务场景;
  • ONEWAY:单向发送,发送方只负责发送消息,不等待服务器回应且没有回调函数触发,即只发送请求不等待应答。 此方式发送消息的过程耗时非常短,一般在微秒级别;
    • 应用场景:适用于耗时非常短,对可靠性要求不高的场景,如日志收集。

Producer 队列选择

RocketMq中所有关于生产者和消费者的代码都在client包下。打开源码,可以看到Procuder下有个selector包

RocketMq提供了3种不同的选择队列方式:

  • SelectMessageQueueByHash
  • SelectMessageQueueByMachineRoom
  • SelectMessageQueueByRandom

它们都实现了 MessageQueueSelector 接口,可以自己实现这个接口,定义自己的队列选择方式

那么默认机制是哪一种呢?

默认选择方式是轮询

消费端负载均衡策略

在 Rocket MQ 5.0 之前,仅支持队列粒度的负载均衡

  • 消息粒度负载均衡:5.0 及以后 PushConsumer和SimpleConsumer默认且仅使用消息粒度负载均衡

  • 队列粒度负载均衡:5.0 及以后的 PullConsumer默认负载策略。对于历史版本(服务端4.x/3.x版本)的消费者,包括PullConsumer、DefaultPushConsumer、DefaultPullConsumer、LitePullConsumer等,默认且仅能使用队列粒度负载均衡策略。

队列粒度负载均衡

同一消费者分组内的多个消费者将按照队列粒度消费消息,即每个队列只能被一个消费者消费(每个消费者可消费多个队列)。

 

 

 

Rebalance (消费端队列分配)

Rebalance(再均衡)机制指的是:将一个Topic下的多个队列(或称之为分区),在同一个消费者组(consumer group)下的多个消费者实例(consumer instance)之间进行重新分配。

 

消费消息

Consumer主要提了下面三种消费策略

  • CONSUME_FROM_LAST_OFFSET

这是Consumer默认的消费策略,它分为两种情况,如果Broker的磁盘消息未过期且未被删除,则从最小偏移量开始消费。如果磁盘已过期,并被删除,则从最大偏移量开始消费。

  • CONSUME_FROM_FIRST_OFFSET

从最早可用的消息开始消费

  • CONSUME_FROM_TIMESTAMP

从指定的时间戳开始消费,这意味着在consumeTimestamp之前生成的消息将被忽略

DefaultLitePullConsumer(拉)

Assign

 

Subscribe

DefaultMQPushConsumer(推)

 

标签:负载,消费,队列,发送,粒度,均衡,生产,RocketMQ
From: https://www.cnblogs.com/suBlog/p/17577908.html

相关文章

  • 分布式开放消息系统(RocketMQ)的原理与实践
    备注:1.如果您此前未接触过RocketMQ,请先阅读附录部分,以便了解RocketMQ的整体架构和相关术语2.文中的MQServer与Broker表示同一概念分布式消息系统作为实现分布式系统可扩展、可伸缩性的关键组件,需要具有高吞吐量、高可用等特点。而谈到消息系统的设计,就回避不了两个问题:消息的顺序问......
  • 比AD更好用的“PCB设计文件转生产文件”工具
    问:为何要将PCB文件转换为GERBER文件和钻孔数据?答:因为GERBER文件是一种国际标准的光绘格式文件,它包含RS-274-D和RS-274-X两种格式,其中RS-274-D称为基本GERBER格式,并要同时附带D码文件才能完整描述一张图形;RS-274-X称为扩展GERBER格式,它本身包含有D码信息,常用的EDA软件都能生成此二......
  • 从互联网到云时代,Apache RocketMQ 是如何演进的?
    作者:隆基2022年,RocketMQ5.0的正式版发布。相对于4.0版本而言,架构走向云原生化,并且覆盖了更多业务场景。消息队列演进史操作系统、数据库、中间件是基础软件的三驾马车,而消息队列属于最经典的中间件之一,已经有30多年的历史。消息队列的发展主要经历了以下几个阶段:第一......
  • 关于使用RocketMQ搭建多Master多Slave模式(同步)集群时遇到的问题
    搭建多Master多Slave模式(同步)集群时的java.lang.NullPointerException异常一、运行环境等基本描述(问题产生原因是权限问题,即权限不够导致无法启动broker,甚至broker线程无法通过jps命令查出。下面阐述分析思路)1.1)操作系统:Linux虚拟机:VMwareWorkstation16Pro、WSL ......
  • 十四、消费模式和负载均衡策略
    消费模式RocketMQ消费者都是以消费组去消费消息。如果多个消费者设置了相同的ConsumerGroup,我们认为这些消费者在同一个消费组内。在ApacheRocketMQ有两种消费模式,分别是:集群消费模式:当使用集群消费模式时,RocketMQ认为任意一条消息只需要被消费组内的任意一个消费者处理即......
  • rocketmq
        ......
  • 十二、消费者类型
    消费者概览ApacheRocketMQ4.x支持PushConsumer、PullConsumer这两种类型的消费者。DefaultMQPushConsumer只需要设置MessageListener,获取消息,消息并发等都有SDK处理。DefaultMQPullConsumer需要用户自己拉取消息,并维护消费进度,同时并发消费消息都由用户控制,比较灵活。 ......
  • 生产制造词汇BOM、MPS、MRP、APS、MES、WMS、JIT、VMI
    BOM(BillofMaterial)物料清单BOM(BillofMaterial)物料清单,是计算机可以识别的产品结构数据文件,也是ERP的主导文件。BOM使系统识别产品结构,也是联系与沟通企业各项业务的纽带。ERP系统中的BOM的种类主要包括5类:缩排式BOM、汇总的BOM、反查用BOM、成本BOM、计划BOMhttps://baike.ba......
  • 使用 Dockerfile 构建生产环境镜像
    传统部署的坑:1202年了,如果你连Docker都不知道是什么,我建议买一本书看看——或者谷歌一下,博客已经写烂了。为什么有这篇文章,是因为我在真正做容器化改造的时候,发现公司生产环境存在大量的坑:传统虚拟机部署,基本依赖克隆或者手工编译。由于人力原因,SRE历来单传,编译出来的PHP......
  • 为什么许多数字孪生产品开始了GIS融合的尝试?
    随着数字孪生技术的发展,越来越多的产品意识到要实现数字孪生的最大价值,需要考虑多个维度的数据,包括空间信息、地理位置、环境条件等。因此,许多数字孪生产品开始了与GIS系统的融合尝试,以进一步提升其功能和应用场景。当然,其中来自各类项目中包含大量GIS数据的现实因素,也是倒逼数字......