private async Task <ResultCode> ProcessJobAsync(ExampleMessageType message) { try { _logger.LogInformation($"Processing OrderID: {message.OrderID}"); // POST order to third party system here return(ResultCode.Success); } catch (CustomException ex) { // Handle and log exception from your third party System LogFailure($"Third Party Error: {ex.Message} Third Party Code: {ex.ErrorCode} {ex.StackTrace}"); return(IsTransientError(ex.HttpStatus) ? ResultCode.TemporaryFailure : ResultCode.PermanentFailure); } 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) ? ResultCode.TemporaryFailure : ResultCode.PermanentFailure); } catch (Exception ex) { // Catch all for other exceptions LogFailure($"{ex.Message} {ex?.InnerException?.Message} {ex.StackTrace}"); return(ResultCode.PermanentFailure); } }
private async Task <ResultCode> TryProcessJobAsync(ExampleMessageType message) { try { return(await ProcessJobAsync(message)); } catch (Exception ex) { LogFailure($"Unhandled exception in ProcessJobAsync - {ex.Message} {ex.InnerException.Message} {ex.StackTrace}"); return(ResultCode.PermanentFailure); } }
public async Task <OrderSubmitResponse> HandleOrderReleased(OrderCalculatePayload <CheckoutConfig> payload) { // Send email to the purchaser var toEmail = payload.OrderWorksheet.Order.FromUser.Email; // Forward order to an ERP or fullfilment system var message = new ExampleMessageType { OrderID = payload.OrderWorksheet.Order.ID }; await _serviceBus.SendMessage(_settings.ServiceBusSettings.OrderProcessingQueueName, message, afterMinutes : 1); // Return response return(new OrderSubmitResponse() { HttpStatusCode = 200, xp = new { NeedsAttention = false, OrderSubmitResponseCode = 200 } }); }