コード例 #1
0
        private static void CheckIfProductInStock(MessageQueue responseQueue, ProductInStockRequest request)
        {
            Console.WriteLine("\tchecking if product with the id '" + request.ProductId + "' is in stock");

            // get stock...
            var response = new ProductInStockResponse
            {
                Stock = 8
            };

            // send response back
            using (var queue = responseQueue)
            {
                var message = new Message
                {
                    BodyStream = response.ToJsonStream(),
                    Label      = responseQueue.GetMessageType()
                };
                queue.Send(message);
            }

            Console.WriteLine("\tcurrently are '" + response.Stock + "' in stock");
            Console.WriteLine("\tstock sent...");
            Console.WriteLine();
        }
コード例 #2
0
        public int GetCurrentStock(int productId)
        {
            // create new queue where the application service
            // is going to listen for the respnse => stock amount
            var responseAddress = Guid.NewGuid().ToString().Substring(0, 8);

            responseAddress = @".\private$\" + responseAddress;

            try
            {
                // create response queue for listening
                var responseQueue = MessageQueue.Create(responseAddress);

                // create request object
                var request = new ProductInStockRequest
                {
                    ProductId = productId
                };

                // create reuest queue and send message
                using (var requestQueue = new MessageQueue(RequestQueue))
                {
                    var message = new Message
                    {
                        BodyStream    = request.ToJsonStream(),
                        Label         = request.GetMessageType(),
                        ResponseQueue = responseQueue
                    };
                    requestQueue.Send(message);
                }

                // wait for the response
                var response = responseQueue.Receive();
                if (response == null)
                {
                    return(0);
                }

                var responseBody = response.BodyStream.ReadFromJson <ProductInStockResponse>();
                return(responseBody.Stock);
            }
            catch (Exception ex)
            {
                Debugger.Break();
                throw;
            }
            finally
            {
                if (MessageQueue.Exists(responseAddress))
                {
                    MessageQueue.Delete(responseAddress);
                }
            }
        }