Example #1
0
        /// <summary>Waits for response, that has been sent through on the que sent in constructor param requestQueueName</summary>
        protected void WaitForResponse( )
        {
            using (var connection = factory.CreateConnection())
            {
                using (var channel = connection.CreateModel())
                {
                    channel.QueueDeclare(queue: _requestQueueName,
                                         durable: false,
                                         exclusive: false,
                                         autoDelete: false,
                                         arguments: null);

                    //   https://gigi.nullneuron.net/gigilabs/asynchronous-rabbitmq-consumers-in-net/
                    var consumer = new AsyncEventingBasicConsumer(channel);
                    consumer.Received += Received;
                    channel.BasicConsume(_requestQueueName, true, consumer);

                    using (var colour = new ScopedConsoleColourHelper(ConsoleColor.Green))
                    {
                        Console.WriteLine("Waiting for messages...");
                    }
                    while (true)
                    {
                        Thread.Sleep(50);
                    }
                }
            }
        }
Example #2
0
        public async Task Run()
        {
            using (var colour = new ScopedConsoleColourHelper(ConsoleColor.Yellow))
            {
                Console.WriteLine("Everybody’s Got Something to Hide Except Me and My Monkey");
            }

            await _stockDeliveryManager.CreateOrUpdate(new StockItem()
            {
                Name = "Mr Marvelous Monkey Munch", Quantity = 100
            });

            var stockList = StockList.Create();

            for (int i = 0; i < 100; i++)
            {
                Random rnd      = new Random();
                int    index    = rnd.Next(minValue, maxValue);
                int    quantity = rnd.Next(minValue, maxQuantityValue);

                var stockItem = stockList[index];

                using (var colour = new ScopedConsoleColourHelper())
                {
                    Console.WriteLine($" Name { stockItem.Name} Quantity {quantity}");
                }

                await _stockDeliveryManager.CreateOrUpdate(new StockItem()
                {
                    Name = stockItem.Name, Quantity = quantity
                });

                await Task.Delay(2000);
            }
        }
Example #3
0
        protected override async Task Received(object sender, BasicDeliverEventArgs @event)
        {
            var stockItem = (StockItem)@event.Body.ToArray().DeSerialize(typeof(StockItem));

            using (var colour = new ScopedConsoleColourHelper())
            {
                Console.WriteLine($"Name: {stockItem.Name} Quantity: {stockItem.Quantity}");
            }

            await _stockDeliveryManager.CreateOrUpdate(stockItem);
        }
Example #4
0
        protected override async Task Receive(object sender, BasicDeliverEventArgs e)
        {
            var    stockOrder        = (StockOrder)e.Body.ToArray().DeSerialize(typeof(StockOrder));
            var    correlationId     = e.BasicProperties.CorrelationId;
            string responseQueueName = e.BasicProperties.ReplyTo;

            using (var colour = new ScopedConsoleColourHelper())
            {
                Console.WriteLine($"Received: {stockOrder.OrderNumber}  with CorrelationId {correlationId}");
                foreach (var item in stockOrder.OrderItems)
                {
                    Console.WriteLine($"Name: {item.Name} Quantity: {item.Quantity}");
                }
            }
            var responseMessage = await _orderItemManager.Order(stockOrder);

            Reply(correlationId, responseQueueName, responseMessage.Serialize());
        }
        /// <summary>Waits for response.</summary>
        protected void WaitForResponse()
        {
            using (var connection = _factory.CreateConnection())
            {
                using (_channel = connection.CreateModel())
                {
                    _channel.QueueDeclare(_requestQueueName, true, false, false, null);
                    var consumer = new AsyncEventingBasicConsumer(_channel);
                    consumer.Received += Receive;
                    _channel.BasicConsume(_requestQueueName, true, consumer);

                    using (var colour = new ScopedConsoleColourHelper(ConsoleColor.Green))
                    {
                        Console.WriteLine("Waiting for messages...");
                    }
                    while (true)
                    {
                        Thread.Sleep(50);
                    }
                }
            }
        }