private static async Task Send(string text) { var stopwatch = new Stopwatch(); #region ["Send A Simple Msg"] Message simpleMessage = new Message { Body = StringSupport.GetBytes(text) }; stopwatch.Start(); // Send the message on the request queue. await mSimple.SendAsync(simpleMessage); stopwatch.Stop(); Console.WriteLine("---"); Console.WriteLine("Simple Msg: {0} ms.", stopwatch.ElapsedMilliseconds); #endregion #region ["Send Req-Resp Msg"] // Create a session identifyer for the response message string responseSessionId = Guid.NewGuid().ToString(); // Create a message using text as the body. Message requestMessage = new Message { SessionId = responseSessionId, Body = StringSupport.GetBytes(text), ReplyToSessionId = responseSessionId }; Console.WriteLine("---"); Console.WriteLine("Sending request to RequestQueue for processing..."); stopwatch.Start(); // Send the message on the request queue. await mSender.SendAsync(requestMessage); // Accept a session message. var responseSession = await mSessionRecvr.AcceptMessageSessionAsync(responseSessionId); Message responseMessage = await responseSession.ReceiveAsync(); stopwatch.Stop(); await responseSession.CloseAsync(); #endregion // Deserialise the message body to echoText. string echoText = StringSupport.GetString(responseMessage.Body); Console.WriteLine("Response rcvd from Server."); Console.WriteLine(echoText); Console.WriteLine("Req-Resp (Total) Time: {0} ms.", stopwatch.ElapsedMilliseconds); }
static QueueClient InitializeReceiver() { var mSender = new MessageSender(AccountDetails.ConnectionString, AccountDetails.ResponseQueueName); var mReciever = new QueueClient(AccountDetails.ConnectionString, AccountDetails.RequestQueueName, ReceiveMode.PeekLock); mReciever.RegisterSessionHandler( async(session, message, cancellationToken) => { var stopwatch = new Stopwatch(); stopwatch.Start(); var sessionId = message.ReplyToSessionId; var body = message.Body; var msg = StringSupport.GetString(body); string echoText = "Echo: " + msg; var outMsg = new Message { Body = StringSupport.GetBytes(echoText), SessionId = sessionId }; await mSender.SendAsync(outMsg); stopwatch.Stop(); await session.CompleteAsync(message.SystemProperties.LockToken); await session.CloseAsync(); lock (Console.Out) { Console.ForegroundColor = ConsoleColor.Cyan; Console.WriteLine("----"); Console.WriteLine("Message received"); Console.WriteLine("SessionId = {0}", message.SessionId); Console.WriteLine("MessageId = {0}", message.MessageId); Console.WriteLine("SequenceId = {0}", message.SessionId); Console.WriteLine("Message = {0}", msg); Console.ResetColor(); } Console.WriteLine("Time: {0} ms.", stopwatch.ElapsedMilliseconds); Console.WriteLine(); }, new SessionHandlerOptions(LogMessageHandlerException) { MessageWaitTimeout = TimeSpan.FromSeconds(5), MaxConcurrentSessions = 1, AutoComplete = false }); return(mReciever); }