private async Task <JobResultCode> TryProcessJobAsync(OrderQueueMessage message) { try { return(await ProcessJobAsync(message)); } catch (Exception ex) { LogFailure($"Unhandled exception in ProcessJobAsync - {ex.Message} {ex.InnerException.Message} {ex.StackTrace}"); return(JobResultCode.PermanentFailure); } }
private async Task <JobResultCode> ProcessJobAsync(OrderQueueMessage message) { try { _logger.LogInformation($"Processing OrderID: {message.OrderID}"); // POST order to third party system here return(JobResultCode.Success); } catch (OrderCloudException ex) { // Handle and log exception from OrderCloud LogFailure($"{ex.InnerException?.Message} {ex?.InnerException?.InnerException?.Message} { JsonConvert.SerializeObject(ex.Errors) } {ex.StackTrace }"); return(IsTransientError(ex.HttpStatus) ? JobResultCode.TemporaryFailure : JobResultCode.PermanentFailure); } catch (Exception ex) { // Catch all for other exceptions LogFailure($"{ex.Message} {ex?.InnerException?.Message} {ex.StackTrace}"); return(JobResultCode.PermanentFailure); } }