Пример #1
0
        public void Message_Handler_ACK()
        {
            ResonanceTransporter t1 = new ResonanceTransporter(new InMemoryAdapter("TST"));
            ResonanceTransporter t2 = new ResonanceTransporter(new InMemoryAdapter("TST"));

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

            bool received = false;

            t2.RegisterMessageHandler <CalculateRequest>((t, message) =>
            {
                received = true;
            });

            t1.Send(new CalculateRequest()
            {
                A = 10, B = 15
            }, new ResonanceMessageConfig()
            {
                RequireACK = true
            });

            Thread.Sleep(500);

            Assert.IsTrue(received);

            t1.Dispose(true);
            t2.Dispose(true);
        }
Пример #2
0
        public void Message_Handler_ACK_Throws_Exception()
        {
            ResonanceTransporter t1 = new ResonanceTransporter(new InMemoryAdapter("TST"));
            ResonanceTransporter t2 = new ResonanceTransporter(new InMemoryAdapter("TST"));

            t2.MessageAcknowledgmentBehavior = ResonanceMessageAckBehavior.ReportErrors;
            t1.MessageAcknowledgmentBehavior = ResonanceMessageAckBehavior.ReportErrors;

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

            bool received = false;

            t2.RegisterMessageHandler <CalculateRequest>((t, message) =>
            {
                received = true;
                throw new Exception("Test Error");
            });

            Assert.ThrowsException <ResonanceResponseException>(() =>
            {
                t1.Send(new CalculateRequest()
                {
                    A = 10, B = 15
                }, new ResonanceMessageConfig()
                {
                    RequireACK = true
                });
            });

            Thread.Sleep(500);

            Assert.IsTrue(received);

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