retryTimesWhenSendAsyncFailed: 异步发送失败重试次数,异步重试不会选择其他 broker,仅在同一个 broker 上做重试,不保证消息不丢。 retryAnotherBrokerWhenNotStoreOK: 消息刷盘(主或备)超时或 slave 不可用(返回状态非 SEND_OK),是否尝试发送到其他 broker,默认 false。十分重要消息可以开启。 ” 此外,只有 普通...
producer.setRetryTimesWhenSendFailed(3); DefaultMQProducerImpl 的代码实现重试的逻辑, 源码可以知道重试场景: 官网说明 Producer的send方法本身支持内部重试,重试逻辑如下:1、至多重试2次。2、如果同步模式发送失败,则轮转到下一个Broker,如果异步模式发送失败,则只会在当前Broker进行重试。这个方法的总耗时时间不超过...
// 指定异步发送失败后不进行重试发送 producer.setRetryTimesWhenSendAsyncFailed(0); 1. 2. 3. 4. 消息刷盘失败策略: ❝消息刷盘超时,默认是不会将消息尝试发送到其他Broker。 对于重要消息可以通过在Broker的配置文件设置retryAnotherBrokerWhenNotStoreOK属性为true来开启。 几种情况 异步发送在发送过程中出现...
producer.setNamesrvAddr("rocketmqOS:9876");// 设置同步发送失败时重试发送的次数,默认为2次producer.setRetryTimesWhenSendFailed(3);// 设置发送超时时限为5s,默认3sproducer.setSendMsgTimeout(5000); 如果超过重试次数,则抛出异常,由Producer去保证消息不丢。 当Producer出现RemotingException、MQClientException、MQ...
getRetryTimesWhenSendFailed(),否则为1;之后就是最多循环timesTotal次执行sendKernelImpl,RemotingException异常及MQBrokerException异常中responseCode为TOPIC_NOT_EXIST、SERVICE_NOT_AVAILABLE、SYSTEM_ERROR、NO_PERMISSION、NO_BUYER_ID、NOT_IN_CURRENT_UNIT或者是sendResult.getSendStatus()不等于SendStatus.SEND_OK的...
retryTimesWhenSendFailed:同步发送失败重投次数,默认为2,因此生产者最多会尝试发送retryTimesWhenSendFailed + 1次。且生产者不会选择上次失败的broker,而是尝试向其他broker发送,最大程度保证消息不丢。超过重投次数,抛出异常,由客户端保证消息不丢。当出现RemotingException、MQClientException和部分MQBrokerException时会...
1+this.defaultMQProducer.getRetryTimesWhenSendFailed():1;inttimes=0;String[]brokersSent=newString[timesTotal];for(;times<timesTotal;times++){StringlastBrokerName=null==mq?null:mq.getBrokerName();MessageQueuemqSelected=this.selectOneMessageQueue(topicPublishInfo,lastBr...
rocketmq.producer.retry-times-when-send-async-failed=2 #消息发送失败重试次数,默认为2 rocketmq.producer.retry-times-when-send-failed=2 1. 2. 3. 4. 也可以通过下面这种方式配置 DefaultMQProducerdefaultMQProducer=newDefaultMQProducer(); defaultMQProducer.setRetryTimesWhenSendFailed(2); ...
同步:调用发送消息方法后,同步阻塞,直到返回SendResult。配置retryTimesWhenSendFailed重试次数。 异步:调用发送消息方法后,立即返回,发送结果会通过开发者自己注册的回调函数SendCallback进行处理。配置retryTimesWhenSendAsyncFailed重试次数。 单向发送:这种方法完全不关心发送后的返回结果。显然,它具有最大吞吐量,但也存在...
producer.setRetryTimesWhenSendFailed(3); //失败的情况重发3次 producer.send(msg, 1000); //消息在1S内没有发送成功,就会重试 二、 Consumer端重试 消费者端的失败,分为2种情况,一个是exception,一个是timeout。 1. Exception 消息正常的到了消费者,结果消费者发生异常,处理失败了。例如反序列化失败,消息...