问个RocketMQ问题啊
broker的role是SYNC_MASTER
然后从节点没有启动
在5.1.3里面发送消息,会正常返回SEND_OK
在5.X之前的版本,会返回SLAVE_NOT_AVAILABLE
这块的代码,我看5.1.3里面,在HAService的isSlaveOK没有调用.
这里是改变了处理的策略么?我看官网上面这部分描述和之前是一样的,应该返回SLAVE_NOT_AVAILABLE
可以看一下
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 中国开发者钉钉群”
Broker在RocketMQ中的角色主要有Master和Slave两种。Master主要用于处理生产者、消费者的请求和存储数据,而Slave则是从Master同步所有数据到本地。Broker同步数据的方式有两种:同步复制和异步复制。同步复制是指客户端发送消息到Master,Master将消息同步复制到Slave的过程,可以通过设置参数brokerRole=BrokerRole.SYNC_MASTER来实现。这种消息配置的可靠性很强,但是效率比较低,适用于金融、在线教育等对消息有强可靠需求的场景。异步复制是指客户端发送消息到Master,再由线程HAService异步同步到Slave的过程,可以通过设置参数brokerRole=BrokerRole.ASYNC_MASTER来实现。这种消息配置的效率非常高,可靠性比同步复制差,适用于大部分业务场景。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系产品 Serverless 化。RocketMQ 一站式学习:https://rocketmq.io/