public async Task Run(string namespaceAddress, string queueName, string receiveToken) { var receiverFactory = MessagingFactory.Create( namespaceAddress, new MessagingFactorySettings { TransportType = TransportType.Amqp, TokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider(receiveToken) }); try { var receiver = receiverFactory.CreateMessageReceiver(queueName, ReceiveMode.PeekLock); try { var responder = new RequestReplyResponder( new Uri(namespaceAddress), receiver, async m => { Console.WriteLine("Got {0}", m.Label); switch (m.Label) { case "requestA": return(new BrokeredMessage { Label = "responseA" }); case "requestB": return(new BrokeredMessage { Label = "responseB" }); default: await m.DeadLetterAsync("Unknown", "Unknown Message"); return(null); } }); var cts = new CancellationTokenSource(); var runTask = responder.Run(cts.Token); Console.WriteLine("Press ENTER to stop processing requests."); Console.ReadLine(); cts.Cancel(); await runTask; } finally { receiver.Close(); } } finally { receiverFactory.Close(); } }
public async Task Run(string namespaceAddress, string queueName, string receiveToken) { var receiverFactory = MessagingFactory.Create( namespaceAddress, new MessagingFactorySettings { TransportType = TransportType.Amqp, TokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider(receiveToken) }); try { var receiver = receiverFactory.CreateMessageReceiver(queueName, ReceiveMode.PeekLock); try { var responder = new RequestReplyResponder( new Uri(namespaceAddress), receiver, async m => { Console.WriteLine("Got {0}", m.Label); switch (m.Label) { case "requestA": return new BrokeredMessage { Label = "responseA" }; case "requestB": return new BrokeredMessage { Label = "responseB" }; default: await m.DeadLetterAsync("Unknown", "Unknown Message"); return null; } }); var cts = new CancellationTokenSource(); var runTask = responder.Run(cts.Token); Console.WriteLine("Press ENTER to stop processing requests."); Console.ReadLine(); cts.Cancel(); await runTask; } finally { receiver.Close(); } } finally { receiverFactory.Close(); } }