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(); }
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); } } }