Exemplo n.º 1
0
        public void RequestResponseMultipartMessageWithRetrySucceedsFirstTry()
        {
            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);
            var          requestMessage = new NetMQMessage(1);

            requestMessage.Append("Hi");

            using (var progressPublisher = new PublisherSocket(pubAddress))
                using (var progressSubscriber = new SubscriberSocket(pubAddress))
                    using (var server = new ResponseSocket(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 received message {0} at {1:ss.fff}", message.First.ConvertToString(),
                                              DateTime.Now);

                            // reply same message
                            socket.SendMultipartMessage(message);
                        });

                        using (serverProactor)
                            using (progressProactor)
                            {
                                var responseMessage = RequestSocket.RequestResponseMultipartMessageWithRetry(address,
                                                                                                             requestMessage, numTries, requestTimeout, progressPublisher);
                                Assert.IsNotNull(responseMessage);
                                Assert.AreEqual(1, responseMessage.FrameCount);
                                var responseString = responseMessage.First.ConvertToString();
                                Assert.AreEqual("Hi", responseString);
                            }
                    }
        }