问个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 89 分享 版权
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-learning.com/

还有其他疑问?
咨询AI助理