Пример #1
0
        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);
            }
        }
Пример #2
0
        public ActionResult CompleteOrder([FromBody] OrderReadyEvent ore)
        {
            ore.TimeStamp = DateTime.Now;

            _eventBus.PublishEvent <OrderReadyEvent>("FoodOrderReady", ore);

            return(new JsonResult(ore));
        }
Пример #3
0
 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);
     }
 }
Пример #4
0
 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);
     }
 }
Пример #5
0
        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);
        }
Пример #6
0
        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);
        }
Пример #7
0
        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);
 }