public async Task ProcessOrderAsync(ProcessOrderCommand processOrderCommand) { var commandHandlerSuccess = await orderCommandHandler.HandleAsync(processOrderCommand); var orderProcessedEvent = new OrderProcessedEvent(processOrderCommand.Order); orderProcessedEvent.Success = true; if (!commandHandlerSuccess) { orderProcessedEvent.Success = false; } await bus.EnqueueAsync(orderProcessedEvent, OrderProcessedEvent.EventQueueName); }
public Task Handle(OrderReceivedEvent message, IMessageHandlerContext context) { var format = "{Application}.{Service}.{Operation}-{TransactionId}: {LogMessage}"; // simulate long running process Thread.Sleep(TimeSpan.FromSeconds(5)); Console.WriteLine($"Step 2: Received OrderReceivedEvent {message.TransactionId}"); //log.Info($"Step 2: Received OrderReceivedEvent {message.TransactionId}"); var logMessage = $"Step 2: Received OrderReceivedEvent {message.TransactionId}"; try { log.InfoFormat(format, "Lhi.NsbDemo.Orders", "OrderReceivedCommandHandler", "Handle-OrderProcessedEvent", message.TransactionId, logMessage); } catch { } _promCounter.Labels(Environment.MachineName, "received").Inc(); //TODO: resolving backend platform and process the order var result = "succeeded";//happy scenario count++; // fail on every 3rd order received if (count == 3) { result = "failed"; count = 0; } // Send process result back to the Saga var orderProcessedEvent = new OrderProcessedEvent { TransactionId = message.TransactionId, Results = result }; try { context.Publish(orderProcessedEvent); } catch (Exception ex) { var errorMessage = $"Could not publish OrderProcessedEvent. Error: {ex.Message}"; log.ErrorFormat(format, "Lhi.NsbDemo.Orders", "OrderReceivedCommandHandler", "Handle-OrderProcessedEvent", message.TransactionId, errorMessage); } return(Task.CompletedTask); }
public async Task ProcessOrderAsync(ProcessOrderCommand processOrderCommand) { var commandHandlerSuccess = await _orderCommandHandler.HandleAsync(processOrderCommand); var orderProcessedEvent = new OrderProcessedEvent(processOrderCommand.Order); orderProcessedEvent.Success = true; if (!commandHandlerSuccess) { Console.WriteLine("Falha no tratamento da mensagem"); orderProcessedEvent.Success = false; } await _bus.EnqueueAsync(orderProcessedEvent, OrderProcessedEvent.EventQueueName); }
public Task Handle(OrderProcessedEvent message, IMessageHandlerContext context) { // handle response Console.WriteLine($"Step 3: Order {message.TransactionId} has been process with results: {message.Results}"); //log.Info($"Step 3: Order {message.TransactionId} has been process with results: {message.Results}"); var format = "{Application}.{Service}.{Operation}-{TransactionId}: {LogMessage}"; var logMessage = $"Step 3: Order {message.TransactionId} has been process with results: {message.Results}"; try { log.InfoFormat(format, "Lhi.NsbDemo.Orders", "OrdersSaga", "Handle-OrderProcessedEvent", message.TransactionId, logMessage); } catch { } _promCounter.Labels(Environment.MachineName, "processed").Inc(); // if order processing failed, send a notification command if (message.Results == "failed") { var sendNotificationCommand = new SendNotificationCommand { TransactionId = message.TransactionId, Message = $"Order {message.TransactionId} could not be procceeded. Please try again!" }; try { context.Send(sendNotificationCommand); } catch (Exception ex) { var errorMessage = $"Could not send SendNotificationCommand. Error: {ex.Message}"; log.ErrorFormat(format, "Lhi.NsbDemo.Orders", "OrdersSaga", "Handle-OrderProcessedEvent", message.TransactionId, errorMessage); } } return(Task.CompletedTask); }