예제 #1
0
        public void Protobuf_Transcoding_Type_Resolver()
        {
            if (IsRunningOnAzurePipelines)
            {
                return;
            }

            IResonanceTransporter t1 = ResonanceTransporter.Builder
                                       .Create()
                                       .WithInMemoryAdapter()
                                       .WithAddress("TST")
                                       .WithProtobufTranscoding()
                                       .WithMessageTypeHeaderMethod(MessageTypeHeaderMethod.Name)
                                       .WithTypeResolver <ProtobufTypeResolver>()
                                       .Build();

            IResonanceTransporter t2 = ResonanceTransporter.Builder
                                       .Create()
                                       .WithInMemoryAdapter()
                                       .WithAddress("TST")
                                       .WithProtobufTranscoding()
                                       .WithMessageTypeHeaderMethod(MessageTypeHeaderMethod.Name)
                                       .WithTypeResolver <ProtobufTypeResolver>()
                                       .Build();

            t1.Connect();
            t2.Connect();

            t2.RequestReceived += (s, e) =>
            {
                Messages.Proto.CalculateRequest receivedRequest = e.Message.Object as Messages.Proto.CalculateRequest;
                t2.SendResponse(new Messages.Proto.CalculateResponse()
                {
                    Sum = receivedRequest.A + receivedRequest.B
                }, e.Message.Token);
            };

            var request = new Messages.Proto.CalculateRequest()
            {
                A = 10, B = 15
            };
            var response = t1.SendRequest <Messages.Proto.CalculateRequest, Messages.Proto.CalculateResponse>(request);

            t1.Dispose(true);
            t2.Dispose(true);

            Assert.AreEqual(response.Sum, request.A + request.B);
        }
예제 #2
0
        public void Protobuf_Encoding()
        {
            IResonanceTransporter t1 = ResonanceTransporter.Builder
                                       .Create()
                                       .WithInMemoryAdapter()
                                       .WithAddress("TST")
                                       .WithProtobufTranscoding()
                                       .Build();

            IResonanceTransporter t2 = ResonanceTransporter.Builder
                                       .Create()
                                       .WithInMemoryAdapter()
                                       .WithAddress("TST")
                                       .WithProtobufTranscoding()
                                       .Build();

            t1.ConnectAsync().Wait();
            t2.ConnectAsync().Wait();

            t2.RequestReceived += (s, e) =>
            {
                Messages.Proto.CalculateRequest receivedRequest = e.Message.Object as Messages.Proto.CalculateRequest;
                t2.SendResponseAsync(new Messages.Proto.CalculateResponse()
                {
                    Sum = receivedRequest.A + receivedRequest.B
                }, e.Message.Token);
            };

            for (int i = 0; i < 1000; i++)
            {
                var request = new Messages.Proto.CalculateRequest()
                {
                    A = 10, B = i
                };
                var response = t1.SendRequestAsync <Messages.Proto.CalculateRequest, Messages.Proto.CalculateResponse>(request).GetAwaiter().GetResult();
            }

            t1.Dispose(true);
            t2.Dispose(true);
        }