mirror of
https://github.com/apache/rocketmq.git
synced 2026-10-29 17:25:35 +08:00
Merge pull request #1800 from Cczzzz/master
[ISSUE #1781]Fix asynchronous send retry
This commit is contained in:
@@ -519,9 +519,11 @@ public class MQClientAPIImpl {
|
||||
final SendMessageContext context,
|
||||
final DefaultMQProducerImpl producer
|
||||
) throws InterruptedException, RemotingException {
|
||||
final long beginStartTime = System.currentTimeMillis();
|
||||
this.remotingClient.invokeAsync(addr, request, timeoutMillis, new InvokeCallback() {
|
||||
@Override
|
||||
public void operationComplete(ResponseFuture responseFuture) {
|
||||
long cost = System.currentTimeMillis() - beginStartTime;
|
||||
RemotingCommand response = responseFuture.getResponseCommand();
|
||||
if (null == sendCallback && response != null) {
|
||||
|
||||
@@ -555,23 +557,23 @@ public class MQClientAPIImpl {
|
||||
producer.updateFaultItem(brokerName, System.currentTimeMillis() - responseFuture.getBeginTimestamp(), false);
|
||||
} catch (Exception e) {
|
||||
producer.updateFaultItem(brokerName, System.currentTimeMillis() - responseFuture.getBeginTimestamp(), true);
|
||||
onExceptionImpl(brokerName, msg, 0L, request, sendCallback, topicPublishInfo, instance,
|
||||
onExceptionImpl(brokerName, msg, timeoutMillis - cost, request, sendCallback, topicPublishInfo, instance,
|
||||
retryTimesWhenSendFailed, times, e, context, false, producer);
|
||||
}
|
||||
} else {
|
||||
producer.updateFaultItem(brokerName, System.currentTimeMillis() - responseFuture.getBeginTimestamp(), true);
|
||||
if (!responseFuture.isSendRequestOK()) {
|
||||
MQClientException ex = new MQClientException("send request failed", responseFuture.getCause());
|
||||
onExceptionImpl(brokerName, msg, 0L, request, sendCallback, topicPublishInfo, instance,
|
||||
onExceptionImpl(brokerName, msg, timeoutMillis - cost, request, sendCallback, topicPublishInfo, instance,
|
||||
retryTimesWhenSendFailed, times, ex, context, true, producer);
|
||||
} else if (responseFuture.isTimeout()) {
|
||||
MQClientException ex = new MQClientException("wait response timeout " + responseFuture.getTimeoutMillis() + "ms",
|
||||
responseFuture.getCause());
|
||||
onExceptionImpl(brokerName, msg, 0L, request, sendCallback, topicPublishInfo, instance,
|
||||
onExceptionImpl(brokerName, msg, timeoutMillis - cost, request, sendCallback, topicPublishInfo, instance,
|
||||
retryTimesWhenSendFailed, times, ex, context, true, producer);
|
||||
} else {
|
||||
MQClientException ex = new MQClientException("unknow reseaon", responseFuture.getCause());
|
||||
onExceptionImpl(brokerName, msg, 0L, request, sendCallback, topicPublishInfo, instance,
|
||||
onExceptionImpl(brokerName, msg, timeoutMillis - cost, request, sendCallback, topicPublishInfo, instance,
|
||||
retryTimesWhenSendFailed, times, ex, context, true, producer);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -188,7 +188,7 @@ public class RemotingCommand {
|
||||
}
|
||||
|
||||
public static int createNewRequestId() {
|
||||
return requestId.incrementAndGet();
|
||||
return requestId.getAndIncrement();
|
||||
}
|
||||
|
||||
public static SerializeType getSerializeTypeConfigInThisServer() {
|
||||
|
||||
Reference in New Issue
Block a user