public async Task <bool> Handle(OrderPlacedEvent message) { // Returning true would indicate: // The message was handled successfully // The message can be removed from the queue. // Returning false would indicate: // The message was not handled successfully // The message handling should be retried (configured by default) // The message should be moved to the error queue if all retries fail try { _logger.LogInformation("Order {orderId} for {description} received", message.OrderId, message.Description); // This is where you would actually handle the order placement // Intentionally left empty for the sake of this being a sample application _logger.LogInformation("Order {orderId} ready", message.OrderId); var orderReadyEvent = new OrderReadyEvent { OrderId = message.OrderId }; await _publisher.PublishAsync(orderReadyEvent).ConfigureAwait(false); return(true); } catch (Exception ex) { _logger.LogError(ex, "Failed to handle message for {orderId}", message.OrderId); return(false); } }
public ActionResult CompleteOrder([FromBody] OrderReadyEvent ore) { ore.TimeStamp = DateTime.Now; _eventBus.PublishEvent <OrderReadyEvent>("FoodOrderReady", ore); return(new JsonResult(ore)); }
public void ReceiveOrder(OrderReadyEvent ready) { foreach (var incoming in ready.Items) { var item = OrderedItems.First(x => incoming.GetType() == x.GetType()); DelieveredItems.Add(item); OrderedItems.Remove(item); } }
public void Handle(OrderReadyEvent @event) { var order = orderRepository.Get(@event.OrderId); var product = order.Products.First(); var stock = stockRepository.Get(product.ProductId); stock.Decrease(product.Quantity); stockRepository.Save(stock); }
public void DishDeliveredEventMovesFromOrderedToDelieveredColumn() { var customer = new Customer(); customer.OrderedItems.Add(new MillerLite()); customer.OrderedItems.Add(new Pizza()); var ready = new OrderReadyEvent(); ready.Items.Add(new MillerLite()); ready.Items.Add(new Pizza()); customer.ReceiveOrder(ready); Assert.IsEmpty(customer.OrderedItems); Assert.AreEqual(2, customer.DelieveredItems.Count); }
private void NotifyOrderIsCompleted(OrderReadyEvent message) { log.InfoFormat("Received OrderReadyEvent for order: {0}", message.Data); }