public void OnEvent(TestServiceEvent2 message) { Handle(message); }
public void ShouldCatchAndHandleExceptionsThrownByEndpointObservables() { FakeServiceEndpoint erroringEndpoint = new FakeServiceEndpoint(typeof(ITestServiceMessage1)) { ThrowException = true }; FakeServiceEndpoint serviceEndpoint = new FakeServiceEndpoint(typeof(ITestServiceMessage2)); IServiceBus serviceBus = ServiceBus.Configure() .WithEndpoint((IServiceEndpointClient) erroringEndpoint) .WithEndpoint((IServiceEndpoint)erroringEndpoint) .WithEndpoint((IServiceEndpointClient) serviceEndpoint) .WithEndpoint((IServiceEndpoint)serviceEndpoint) .UsingConsoleLogging().Create(); ConcurrentBag<IMessage> messages = new ConcurrentBag<IMessage>(); ConcurrentBag<Exception> exceptions = new ConcurrentBag<Exception>(); serviceBus.Events.Subscribe(messages.Add); serviceBus.Commands.Subscribe(messages.Add); serviceBus.Requests.Subscribe(messages.Add); serviceBus.Exceptions.Subscribe(exceptions.Add); // trigger exception serviceBus.PublishAsync(new TestServiceEvent1()); TestServiceEvent2 message1 = new TestServiceEvent2(); serviceBus.PublishAsync(message1); // trigger another exception serviceBus.PublishAsync(new TestServiceEvent1()); TestServiceEvent2 message2 = new TestServiceEvent2(); serviceBus.PublishAsync(message2); Assert.That(exceptions.Count(), Is.EqualTo(2)); Assert.That(messages.Contains(message1), "message1 not received"); Assert.That(messages.Contains(message2), "message2 not received"); }