开发者社区 > 云原生 > 消息队列 > 正文

问个RocketMQ问题?

问个RocketMQ问题啊
broker的role是SYNC_MASTER
然后从节点没有启动
在5.1.3里面发送消息,会正常返回SEND_OK
在5.X之前的版本,会返回SLAVE_NOT_AVAILABLE

这块的代码,我看5.1.3里面,在HAService的isSlaveOK没有调用.
这里是改变了处理的策略么?我看官网上面这部分描述和之前是一样的,应该返回SLAVE_NOT_AVAILABLE

展开
收起
嘟嘟嘟嘟嘟嘟 2023-12-04 17:50:04 31 0
2 条回答
写回答
取消 提交回答
  • 可以看一下
    https://github.com/apache/rocketmq/wiki/RIP-34-Support-quorum-write-and-adaptive-degradation-in-master-slave-architecture
    totalReplicas和inSyncReplicas都设置为2应该就是SLAVE_NOT_AVAILABLE了。此回答整理自钉群“群2-Apache RocketMQ 中国开发者钉钉群”

    2023-12-05 18:11:42
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    Broker在RocketMQ中的角色主要有Master和Slave两种。Master主要用于处理生产者、消费者的请求和存储数据,而Slave则是从Master同步所有数据到本地。Broker同步数据的方式有两种:同步复制和异步复制。同步复制是指客户端发送消息到Master,Master将消息同步复制到Slave的过程,可以通过设置参数brokerRole=BrokerRole.SYNC_MASTER来实现。这种消息配置的可靠性很强,但是效率比较低,适用于金融、在线教育等对消息有强可靠需求的场景。异步复制是指客户端发送消息到Master,再由线程HAService异步同步到Slave的过程,可以通过设置参数brokerRole=BrokerRole.ASYNC_MASTER来实现。这种消息配置的效率非常高,可靠性比同步复制差,适用于大部分业务场景。

    2023-12-04 19:44:13
    赞同 展开评论 打赏

多个子产品线联合打造金融级高可用消息服务以及对物联网的原生支持,覆盖多行业。

热门讨论

热门文章

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载