public void RequestResponseStringWithRetryFails() { const string address = "tcp://127.0.0.1:50002"; const string pubAddress = "tcp://127.0.0.1:60002"; const int numTries = 5; var requestTimeout = TimeSpan.FromMilliseconds(100); using (var progressPublisher = new PublisherSocket(pubAddress)) using (var progressSubscriber = new SubscriberSocket(pubAddress)) using (var server = new RouterSocket(address)) { progressSubscriber.SubscribeToAnyTopic(); var progressProactor = new NetMQProactor(progressSubscriber, (socket, message) => Console.WriteLine("C: {0} {1:ss.fff}", message[0].ConvertToString(), DateTime.Now)); var serverProactor = new NetMQProactor(server, (socket, message) => { Console.WriteLine("ResponseEcho recieved message {0} at {1:ss.fff}", message[2].ConvertToString(), DateTime.Now); }); using (serverProactor) using (progressProactor) { var responseMessage = RequestSocket.RequestResponseStringWithRetry(address, "Hi", numTries, requestTimeout, progressPublisher); Assert.IsNull(responseMessage); } } }
public void RequestResponseStringWithRetrySucceedsNotOnFirstTry() { const string address = "tcp://127.0.0.1:50001"; const string pubAddress = "tcp://127.0.0.1:60001"; const int numTries = 5; var requestTimeout = TimeSpan.FromMilliseconds(100); using (var progressPublisher = new PublisherSocket(pubAddress)) using (var progressSubscriber = new SubscriberSocket(pubAddress)) using (var server = new RouterSocket(address)) { progressSubscriber.SubscribeToAnyTopic(); var progressProactor = new NetMQProactor(progressSubscriber, (socket, message) => Console.WriteLine("C: {0} {1:ss.fff}", message[0].ConvertToString(), DateTime.Now)); int attempt = 0; var serverProactor = new NetMQProactor(server, (socket, message) => { Console.WriteLine("ResponseEcho recieved message {0} at {1:ss.fff}", message[2].ConvertToString(), DateTime.Now); attempt++; if (attempt > 1) { // reply same message socket.SendMultipartMessage(message); } }); using (serverProactor) using (progressProactor) { var responseMessage = RequestSocket.RequestResponseStringWithRetry(address, "Hi", numTries, requestTimeout, progressPublisher); Assert.AreEqual("Hi", responseMessage); } } }