阿里二面:RocketMQ 集群 Broker 挂了,会造成什么影响?

大家好,今天分享 RocketMQ 的 Broker 挂了,会带来什么影响。

面试官:你好,如果 RocketMQ 集群中的一个 Broker 挂了,会造成什么影响呢? 

:Broker 挂了,首先会导致 Producer 发送消息失败。对于普通消息,Producer 同步发送的情况下会有重试机制,重试时把消息发送到其他 Broker。如下图,Broker1 宕机了,把消息发送到了 Broker2:

发送消息的逻辑其实是是一个循环,发送失败后会不断尝试重新发送,代码如下:

int timesTotal = communicationMode == CommunicationMode.SYNC ? 1 + this.defaultMQProducer.getRetryTimesWhenSendFailed() : 1;
for (; times < timesTotal; times++) {
 String lastBrokerName = null == mq ? null : mq.getBrokerName();
 MessageQueue mqSelected = this.selectOneMessageQueue(topicPublishInfo, lastBrokerName);
 if (mqSelected != null) {
  mq = mqSelected;
  try {
   sendResult = this.sendKernelImpl(msg, mq, communicationMode, sendCallback, topicPublishInfo, timeout - costTime);
   switch (communicationMode) {
    case ASYNC:
     return null;
    case ONEWAY:
     return null;
    case SYNC:
     if (sendResult.getSendStatus() != SendStatus.SEND_OK) {
         //如果发送失败了,这里会进行重试
      if (this.defaultMQProducer.isRetryAnotherBrokerWhenNotStoreOK()) {
       continue;
      }
     }

     return sendResult;
    default:
     break;
   }
  } catch (RemotingException e) {
  }//省略其他 catch
 } else {
  break;
 }                                                                                                                                                                                                          
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值