private async Task <(bool, OperateResult)> SendWithoutRetryAsync(PublishedMessage message) { var startTime = DateTimeOffset.UtcNow; var stopwatch = Stopwatch.StartNew(); var tracingResult = TracingBefore(message.Name, message.Content); var operationId = tracingResult.Item1; var sendValues = tracingResult.Item2 != null ? CommonHelper.AddTracingHeaderProperty(message.Content, tracingResult.Item2) : message.Content; var result = await PublishAsync(message.Name, sendValues); stopwatch.Stop(); if (result.Succeeded) { await SetSuccessfulState(message); TracingAfter(operationId, message.Name, sendValues, startTime, stopwatch.Elapsed); return(false, OperateResult.Success); } else { TracingError(operationId, message, result, startTime, stopwatch.Elapsed); var needRetry = await SetFailedState(message, result.Exception); return(needRetry, OperateResult.Failed(result.Exception)); } }