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

问个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 47 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
    赞同 展开评论 打赏

涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系产品 Serverless 化。RocketMQ 一站式学习:https://rocketmq.io/

热门讨论

热门文章

相关电子书

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