rocketmq常见问题

以下是关于RocketMQ项目的常见问题

使用

  1. 「新创建的Consumer ID从哪里开始消费消息?」

    1)如果发送的消息在三天之内,那么消费者会从服务器中保存的第一条消息开始消费。

    2)如果发送的消息已经超过三天,则消费者会从服务器中的最新消息开始消费,也就是从队列的尾部开始消费。

    3)如果消费者重新启动,那么它会从最后一个消费位置开始消费消息。

  2. 「当消费失败的时候如何重新消费消息?」

    1)在集群模式下,消费的业务逻辑代码会返回Action.ReconsumerLater,NULL,或者抛出异常,如果一条消息消费失败,最多会重试16次,之后该消息会被丢弃。

    2)在广播消费模式下,广播消费仍然保证消息至少被消费一次,但不提供重发的选项。

  3. 「当消费失败的时候如何找到失败的消息?」

    1)使用按时间的主题查询,可以查询到一段时间内的消息。

    2)使用主题和消息ID来准确查询消息。

    3)使用主题和消息的Key来准确查询所有消息Key相同的消息。

  4. 「消息只会被传递一次吗?」

    RocketMQ 确保所有消息至少传递一次。 在大多数情况下,消息不会重复。

  5. 「如何增加一个新的Broker?」

    1)启动一个新的Broker并将其注册到name server中的Broker列表里。

    2)默认只自动创建内部系统topic和consumer group。 如果您希望在新节点上拥有您的业务主题和消费者组,请从现有的Broker中复制它们。 我们提供了管理工具和命令行来处理此问题。

配置相关

以下回答均为默认值,可通过配置修改。

  1. 「消息在服务器上可以保存多长时间?」

    存储的消息将最多保存 3 天,超过 3 天未使用的消息将被删除。

  2. 「消息体的大小限制是多少?」

    通常是256KB

  3. 「怎么设置消费者线程数?」

    当你启动消费者的时候,可以设置 ConsumeThreadNums属性的值,举例如下:

    consumer.setConsumeThreadMin(20);
    consumer.setConsumeThreadMax(20);

错误

  1. 「当你启动一个生产者或消费者的过程失败了并且错误信息是生产者组或消费者重复」

    原因:使用同一个Producer/Consumer Group在同一个JVM中启动多个Producer/Consumer实例可能会导致客户端无法启动。

    解决方案:确保一个 Producer/Consumer Group 对应的 JVM 只启动一个 Producer/Consumer 实例。

  2. 「消费者无法在广播模式下开始加载 json 文件」

    原因:fastjson 版本太低,无法让广播消费者加载本地 offsets.json,导致消费者启动失败。 损坏的 fastjson 文件也会导致同样的问题。

    解决方案:Fastjson 版本必须升级到 RocketMQ 客户端依赖版本,以确保可以加载本地 offsets.json。 默认情况下,offsets.json 文件在 /home/{user}/.rocketmq_offsets 中。 或者检查fastjson的完整性。

  3. 「Broker崩溃以后有什么影响?」

    1)Master节点崩溃

    消息不能再发送到该Broker集群,但是如果您有另一个可用的Broker集群,那么在主题存在的条件下仍然可以发送消息。消息仍然可以从Slave节点消费。

    2)一些Slave节点崩溃

    只要有另一个工作的slave,就不会影响发送消息。 对消费消息也不会产生影响,除非消费者组设置为优先从该Slave消费。 默认情况下,消费者组从 master 消费。

    3)所有Slave节点崩溃

    向master发送消息不会有任何影响,但是,如果master是SYNC_MASTER,producer会得到一个SLAVE_NOT_AVAILABLE,表示消息没有发送给任何slave。 对消费消息也没有影响,除非消费者组设置为优先从slave消费。 默认情况下,消费者组从master消费。

  4. 「Producer提示“No Topic Route Info”,如何诊断?」

    当您尝试将消息发送到一个路由信息对生产者不可用的主题时,就会发生这种情况。

    1)确保生产者可以连接到名称服务器并且能够从中获取路由元信息。

    2)确保名称服务器确实包含主题的路由元信息。 您可以使用管理工具或 Web 控制台通过 topicRoute 从名称服务器查询路由元信息。

    3)确保您的Broker将心跳发送到您的生产者正在连接的同一name server列表。

    4)确保主题的权限为6(rw-),或至少为2(-w-)。

    如果找不到此主题,请通过管理工具命令updateTopic或Web控制台在Broker上创建它。

rocketmq常见问题的更多相关文章

  1. rocketmq常见问题及使用 新手篇

    一 部署阶段 1.启动命令 nameServer启动:nohup sh bin/mqnamesrv  -n ip地址:9876 & broker启动:nohup sh bin/mqbroker ...

  2. RocketMQ 使用及常见问题

    前言 本文档是针对RocketMQ使用及常见问题的说明. 一.获取项目.安装包及文档 1. alibaba/RocketMQ https://github.com/alibaba/RocketMQ 2 ...

  3. RocketMQ在面试中那些常见问题及答案+汇总

    0.汇总 RocketMQ入门到入土(一)新手也能看懂的原理和实战! RocketMQ入门到入土(二)事务消息&顺序消息 从入门到入土(三)RocketMQ 怎么保证的消息不丢失? Rocke ...

  4. 《浅入浅出》-RocketMQ

    你知道的越多,你不知道的越多 点赞再看,养成习惯 本文GitHub https://github.com/JavaFamily 已收录,有一线大厂面试点脑图.个人联系方式和技术交流群,欢迎Star和指 ...

  5. rocketmq运维管理

    # 运维管理--- ### 1 集群搭建 #### 1.1 单Master模式 这种方式风险较大,一旦Broker重启或者宕机时,会导致整个服务不可用.不建议线上环境使用,可以用于本地测试. #### ...

  6. rocketMq安装及集群配置

    网上关于rocketMq安装.集群配置的文章有很多,作为一个初学者,跟着网上的各种教程安装遇到了各种坑,可谓是一路坎坷.本文记录下rocketMq安装的完整过程.希望对你有一点帮助 安装rocketM ...

  7. 消息队列面试题、RabbitMQ面试题、Kafka面试题、RocketMQ面试题 (史上最全、持续更新、吐血推荐)

    文章很长,建议收藏起来,慢慢读! 疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 大厂必备 ...

  8. RabbitMQ,RocketMQ,Kafka 事务性,消息丢失和消息重复发送的处理策略

    消息队列常见问题处理 分布式事务 什么是分布式事务 常见的分布式事务解决方案 基于 MQ 实现的分布式事务 本地消息表-最终一致性 MQ事务-最终一致性 RocketMQ中如何处理事务 Kafka中如 ...

  9. C++常见笔试面试要点以及常见问题

    1. C++常见笔试面试要点: C++语言相关: (1) 虚函数(多态)的内部实现 (2) 智能指针用过哪些?shared_ptr和unique_ptr用的时候需要注意什么?shared_ptr的实现 ...

随机推荐

  1. 如何生成Java文档注释(Java Doc Comments)

    在我们的Java SDK中已经提供了javadoc工具来生成我们的文档. 所以我们可以手动调用javadoc工具来生成文档,或者通过IDE生成.当然IDE也是调用javadoc,不过更快更省事. 注释 ...

  2. JAVA多线程学习五:线程范围内共享变量&ThreadLocal

    一.概念 可以将每个线程用到的数据与对应的线程号存放到一个map集合中,使用数据时从这个集合中根据线程号获取对应线程的数据,就可以实现线程范围内共享相同的变量. 二.代码 Runnable中的run( ...

  3. 开源项目(asyncHttpClient) get post 方式提交

    get方式: 1 public static void requestNetForGetLogin(final Context context,final Handler handler ,final ...

  4. Nodejs ORM框架Sequelize(模型,关联表,事务,循环,及常见问题)

    1.建立连接 const Sequelize = require('sequelize'); const sequelize = new Sequelize('database', 'username ...

  5. 【收藏】Supervisor的作用与配置

    原文链接:https://www.jianshu.com/p/0226b7c59ae2 supervisor supervisor管理进程,是通过fork/exec的方式将这些被管理的进程当作supe ...

  6. python日志装饰器实现

    问题出自:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143184355 ...

  7. 快速搭建springboot工程

    一.创建SpringBoot的三种方式 在线创建: https://start.spring.io 在IntelliJ IDEA中选择Spring Initializr创建:或者在Eclipse中选择 ...

  8. 深入详解Mybatis的架构原理与6大核心流程

    MyBatis 是 Java 生态中非常著名的一款 ORM 框架,目前在一线互联网大厂中应用广泛,Mybatis已经成为了一个必会框架. 如果你想要进入一线大厂,能够熟练使用 MyBatis 开发已经 ...

  9. 统计学习:逻辑回归与交叉熵损失(Pytorch实现)

    1. Logistic 分布和对率回归 监督学习的模型可以是概率模型或非概率模型,由条件概率分布\(P(Y|\bm{X})\)或决 策函数(decision function)\(Y=f(\bm{X} ...

  10. python篇第8天【运算符】

    第7天休息 什么是运算符? 本章节主要说明Python的运算符.举个简单的例子 4 +5 = 9 . 例子中,4 和 5 被称为操作数,"+" 称为运算符. Python语言支持以 ...