public Task Handle(GoodsNotInStockEvent message, IMessageHandlerContext context)
        {
            //TODO: acutal business logic goes here
            //TODO: compensate and inform customer

            log.Info($"Goods are not in stock for CartId {message.CartId}");
            MarkAsComplete();
            return(Task.CompletedTask);
        }
        public Task Handle(CheckGoodsInStockCommand message, IMessageHandlerContext context)
        {
            //TODO: actual business logic goes here

            //randomly return negative events
            if (random.Next(0, 5) == 0)
            {
                var goodsNotInStock = new GoodsNotInStockEvent
                {
                    CartId = message.CartId
                };
                return(context.Publish(goodsNotInStock));
            }

            var goodsInStock = new GoodsInStockEvent
            {
                CartId = message.CartId
            };

            return(context.Publish(goodsInStock));
        }