文章目录

  • PushConsumer核心参数详解
  • PushConsumer消费模式-集群模式

PushConsumer核心参数详解

  1. consumeFromWhere:消费者从那个位置开始消费
  • CONSUME_FROM_LAST_OFFSET:第一次启动从队列最后位置消费,后续再启动接着上次消费的进度开始消费
  • CONSUME_FROM_FIRST_OFFSET:第一次启动从队列初始位置消费,后续再启动接着上次消费的进度开始消费
  • CONSUME_FROM_TIMESTAMP:第一次启动从指定时间点位置消费,后续再启动接着上次消费的进度开始消费
  1. allocateMessageQueueStrategy:消息分配策略(集群模式),指定如何将消息队列分配给每个客户端。包括一致性hash、平均分配、平均轮询分配、自定义消费队列、按机房hash算法实现。默认平均轮询AllocateMessageQueueAveragely,Rebalance(轮询)算法实现策略。

平均分配的实现算法

  • 如果消费者的个数可以除尽队列的个数,那么就完全平均分。
  • 如果不能除尽。那么靠前的消费者多消费一个队列,靠后的消费平均数个队列。
  • 如果消费者的个数大于队列的个数,那么靠前的消费者消费一个队列,后面的不消费。
  1. subscription:订阅关系。

  1. offsetStore: 消息进度存储。
  • 集群消费:从远程Broker获取。
  • 广播消费:从本地文件获取。
  1. consumeThreadMin/consumeThreadMax:最小消费线程数,最大消费线程数,默认都是20。

  2. consumeTimeout:消息阻塞使用线程的最长时间(以分钟为单位),默认15。

  3. pullThresholdSizeForQueue:在队列级别限制缓存的消息大小,默认情况下每个消息队列最多缓存100MiB消息。

  4. consumeConcurrentlyMaxSpan / pullThresholdForQueue: 单队列并行消费允许的最大跨度,默认值2000, 队列级别的流量控制阈值,拉消息本地队列缓存消息最大数,默认1000。

  5. pullInterval: 消息拉取时间间隔,由于是长轮询,所以为0,但是如果应用为了流控,也可以设置大于0的值,单位毫秒,默认0。

  6. pullBatchSize: 批量拉消息,一次最多拉多少条,默认32。

  7. consumeMessageBatchMaxSize: 批量消费,一次消费多少条消息,默认1。

  8. maxReconsumeTimes:最大重试次数,并行模式下默认-1也就是16次,顺序模式下默认-1表示Integer.MAX_VALUE。

  9. awaitTerminationMillisWhenShutdown:当关闭消费者时等待消息消耗的最大时间,0表示没有等待。默认0。

  10. messageModel:消息模型定义了将消息传递到每个客户端的方式,默认集群模式。

PushConsumer消费模式-集群模式

GroupName用于把多个Consumer组织到一起,相同GroupName的Consumer只消费所订阅消息的一部分。
目的:达到天然的负载均衡机制。发消息队列数要和consumer数量为倍数,才能平均负载均衡。
消费者采用负载均衡(集群模式)方式消费消息,一个分组(Group)下的多个消费者共同消费队列消息,每个消费者处理的消息不同。一个Consumer Group中的各个Consumer实例分摊去消费消息,即一条消息只会投递到一个Consumer Group下面的一个实例。例如某个Topic有3个队列,其中一个Consumer Group 有 3 个实例,那么每个实例只消费其中的1个队列。集群消费模式是消费者默认的消费方式。
集群模式: 使用相同 Group ID 的订阅者属于同一个集群。 同一个集群下的订阅者消费逻辑必须完全一致(包括 Tag 的使用) , 这些订阅者在逻辑上可以认为是一个消费节点。

消费端通过如下代码指定消费模式:

// 消费模式 默认是集群模式(负载均衡模式),还有是广播模式
consumer.setMessageModel(MessageModel.CLUSTERING);

集群模式下,每个消费者消费的肯定不是同一个消息。

集群模式下每一个queue都只能被一个消费者消费,但是每一个消费者都可以消费多个queue。

集群模式适用场景&注意事项:

  • 消费端集群化部署, 每条消息只需要被处理一次;
  • 由于消费进度在服务端维护, 可靠性更高。
  • Topic + Tag下的消息可以保证肯定会被整个集群至少消费一次 ;
  • 不保证每一次失败重投的消息路由到同一台机器上, 因此处理消息时不应该做任何确定性假设。
  • 集群中的每个消费者消费的消息肯定不会是同一条消息,因为实际上在集群模式下
    • 每一个queue都只能被一个消费者消费
    • 但是每一个消费者都可以消费多个queue

本文内容到此结束了,
如有收获欢迎点赞

云原生中间件RocketMQ-消费者核心参数、消费模式之集群模式相关推荐

  1. 【云原生 | Kubernetes 实战】01、K8s-v1.25集群搭建和部署基于网页的 K8s 用户界面 Dashboard

    目录 一.K8s 概述 可以查看官方文档:概述 | Kubernetes 组件交互逻辑: 二.kubeadm 安装 K8s-v1.25高可用集群 k8s 环境规划: 1.初始化环境 2.安装 Dock ...

  2. 云原生大爆发,Day2运营与K8s集群生命周期的交织

    嘉宾丨郭至为  整理丨张雪蕊 出品丨CSDN云原生 Wojciech Urbański指出,在当今的专业IT媒体中有一个非常突出的话题,那就是在软件生命周期中的"第0天/第1天/第2天&qu ...

  3. 技术盘点:云原生中间件的技术演进与未来趋势展望

    作者:胡伟琪(白慕) 阿里巴巴董事会主席兼首席执行官张勇在云栖大会分享 过去这几年,随着云原生技术生态的高速发展,中间件技术也在顺应这个大趋势向前演进,如果要说中间件的演进大方向,我认为就是云原生化, ...

  4. 无责任畅想:云原生中间件的下一站

    作者 | 于雨 来源|阿里巴巴云原生公众号 本文源自 2020 年 12 月 20 日作者在云原生社区 meetup 第二期北京站演讲 <Apache Dubbo-go 在云原生时代的实践与探索 ...

  5. 云原生时代 RocketMQ 运维管控的利器 - RocketMQ Operator

    作者 | 刘睿.杜恒 导读:RocketMQ Operator 现已加入 OperatorHub,正式进入 Operator 社区.本文将从实践出发,结合案例来说明,如何通过 RocketMQ Ope ...

  6. 小麦助教:通过阿里云原生中间件产品组合,加速微服务架构落地

    简介:通过深度的使用阿里云丰富的云原生中间件产品,助力小麦微服务架构的快速落地,借助可观测.消息等产品,极大地提升了开发和运维效率,使小麦在降本增效上有了新的突破,真正做到了只关注业务本身. 作者:神 ...

  7. rocketmq docker集群_【解构云原生】RocketMQ高可用方案调研及On K8S设计展望(下)...

    本文由作者授权网易云发布,未经许可,请勿转载. 作者:李海燕,网易杭州研究院云计算技术部工程师 上文链接:[解构云原生]RocketMQ高可用方案调研及On K8S设计展望(上) 四.RocketMQ ...

  8. 云原生中间件——Redis Operator 篇

    应用上云的进程在全球范围内,进行得如火如荼.以应用为中心,云原生的相关技术和方案,已经覆盖了非常多的领域.除了应用的运行时以外,最靠近应用,也是应用依赖性最大的范围,就是周边的中间件.数据库.大数据等 ...

  9. 5.15云原生中间件 Meetup 成都站来啦!

    简介:5 月 15 日 成都站 | 云原生中间件 Meetup 开放报名! 首期亮点速递 美菜网如何在多语言等复杂场景下落地 RocketMQ 以及如何保障产品稳定性和易用性.实现双活的方案. 中型电 ...

最新文章

  1. 树莓派安装 MySQL 时出现错误的解决方法
  2. hdu4665 DFS
  3. 深入Activity的作业完成
  4. Android的AlertDialog详解
  5. python 如何将字符串数字列表转换成数字列表,如何将数字列表转换成字符串数字列表?map(eval,list(str))
  6. ubuntu16.04安装KDE
  7. matlab 同一坐标系 散点图 t,matlab上机练习
  8. [码海拾贝 之TC] 呼叫外部应用程序或脚本
  9. 使用表单传递参数,request处理参数出现未将对象引用设置到对象的实例
  10. 字节跳动面试经验 php,双指针算法:字节跳动初级面试题 PHP
  11. 只不过窗口没有停留 一闪而过
  12. AS中XML注释和取消注释快捷键,实际操作真实有效!!!
  13. 模糊C均值聚类 C++代码
  14. 【语义分割数据集】——cityscape数据集类别名称
  15. windows常用快捷命令大全总结
  16. 微信分享之分享图片/分享图标不能显示
  17. FFMPEG之音频播放
  18. 构建城市三维信息模型(CIM)与数字孪生城市可视化技术 优锘ThingJS
  19. 基于51单片机温度火灾烟雾报警器
  20. 阿里架构专家教你打通Git任督二脉,20分钟搞定Git工作原理

热门文章

  1. Houdini脚本Vex学习
  2. 自动点击微信c语言,【Ctrl.js】微信中给微信运动的朋友自动点赞源码
  3. 深圳创凯电子公司多视频底图像素叠加
  4. 搭建微服务架构:Kubernetes Prometheus ELK Stack的组合
  5. ps-去除红色印章和为人物添加口红
  6. (27)技术人员的内功和外功
  7. 只有潮水退去后,才知道谁在裸泳
  8. JAVA宠物医院后台管理系统设计与实现计算机毕业设计Mybatis+系统+数据库+调试部署
  9. 必备!iShot 1.7.6 中文版 (支持长截图的截图工具)
  10. 好用的绘图工具推荐-xmind