public virtual ITunnel Create(string hostName, string virtualHost, string username, string password, IRabbitWatcher watcher) { var rabbitWatcher = watcher ?? Global.DefaultWatcher; var connectionFactory = new RabbitMQ.Client.ConnectionFactory { HostName = hostName, VirtualHost = virtualHost, UserName = username, Password = password }; var durableConnection = new DurableConnection(new DefaultRetryPolicy(), rabbitWatcher, connectionFactory); var errorHandler = new ConsumerErrorHandler(connectionFactory, Global.DefaultSerializer, rabbitWatcher); var msgHandlerFactory = new DefaultMessageHandlerFactory(errorHandler, Global.DefaultSerializer, rabbitWatcher); var consumerManager = new ConsumerManager(rabbitWatcher, msgHandlerFactory, Global.DefaultSerializer); var tunnel = new RabbitTunnel(consumerManager, rabbitWatcher, new DefaultRouteFinder(), durableConnection, Global.DefaultSerializer, Global.DefaultCorrelationIdGenerator, Global.DefaultPersistentMode); tunnel.AddSerializerObserver(errorHandler); tunnel.AddSerializerObserver(msgHandlerFactory); tunnel.AddSerializerObserver(consumerManager); return tunnel; }
public override ITunnel Create(string hostName, string virtualHost, string username, string password, IRabbitWatcher watcher) { if (RabbitTunnel.Factory is DependencyInjectionTunnelFactory) { return RabbitTunnel.Factory.Create(hostName, virtualHost, username, password, watcher); } var rabbitWatcher = watcher ?? Global.DefaultWatcher; var connectionFactory = new RabbitMQ.Client.ConnectionFactory { HostName = hostName, VirtualHost = virtualHost, UserName = username, Password = password }; var durableConnection = new DurableConnection(new DefaultRetryPolicy(), rabbitWatcher, connectionFactory); var errorHandler = new ConsumerErrorHandler(connectionFactory, Global.DefaultSerializer, rabbitWatcher); var msgHandlerFactory = new DefaultMessageHandlerFactory(errorHandler, rabbitWatcher); var consumerManager = new ConsumerManager(rabbitWatcher, msgHandlerFactory, Global.DefaultSerializer); return new RabbitTunnelWithPriorityQueuesSupport(consumerManager, rabbitWatcher, new DefaultRouteFinder(), durableConnection, Global.DefaultSerializer, Global.DefaultCorrelationIdGenerator, Global.DefaultPersistentMode); }
public void Should_catch_other_exceptions() { // Arrange var watcher = Substitute.For<IRabbitWatcher>(); var durableConnection = Substitute.For<IDurableConnection>(); durableConnection.When(x => x.CreateChannel()) .Do(callInfo => { throw new Exception("unexpecctedException"); }); var handler = new ConsumerErrorHandler(durableConnection, Substitute.For<ISerializer>(), watcher); // Action handler.HandleError(new BasicDeliverEventArgs { Body = new byte[0] }, new Exception()); // Assert watcher.Received().ErrorFormat(Arg.Any<string>(), Arg.Any<object[]>()); }
public void Should_catch_OperationInterruptedException() { // Arrange var watcher = Substitute.For<IRabbitWatcher>(); var durableConnection = Substitute.For<IDurableConnection>(); durableConnection.When(x => x.CreateChannel()) .Do(callInfo => { throw new OperationInterruptedException(new ShutdownEventArgs(ShutdownInitiator.Peer, 1, "Shutdown ;)"));}); var handler = new ConsumerErrorHandler(durableConnection, Substitute.For<ISerializer>(), watcher); // Action handler.HandleError(new BasicDeliverEventArgs { Body = new byte[0] }, new Exception()); // Assert watcher.Received().ErrorFormat(Arg.Any<string>(), Arg.Any<object[]>()); }
public void Should_should_catch_other_exceptions() { // Arrange var watcher = Substitute.For<IRabbitWatcher>(); IConnection connection; var connectionFactory = CreateMockConnectionFactory("/", out connection); connection.When(x => x.CreateModel()) .Do(callInfo => { throw new Exception("unexpecctedException"); }); var handler = new ConsumerErrorHandler(connectionFactory, Substitute.For<ISerializer>(), watcher); // Action handler.HandleError(new BasicDeliverEventArgs { Body = new byte[0] }, new Exception()); // Assert watcher.Received().ErrorFormat(Arg.Any<string>(), Arg.Any<object[]>()); }
private ITunnel Create(DurableConnection durableConnection, IRabbitWatcher rabbitWatcher) { var errorHandler = new ConsumerErrorHandler(() => durableConnection.ConnectionFactory, Global.DefaultSerializer, rabbitWatcher); var msgHandlerFactory = new PriorityMessageHandlerFactory(errorHandler, Global.DefaultSerializer, rabbitWatcher); var consumerManager = new ConsumerManager(rabbitWatcher, msgHandlerFactory, Global.DefaultSerializer); var tunnel = new RabbitTunnelWithPriorityQueuesSupport(consumerManager, rabbitWatcher, new DefaultRouteFinder(), durableConnection, Global.DefaultSerializer, Global.DefaultCorrelationIdGenerator, Global.DefaultPersistentMode); tunnel.AddSerializerObserver(errorHandler); tunnel.AddSerializerObserver(msgHandlerFactory); tunnel.AddSerializerObserver(consumerManager); return tunnel; }
public void Should_create_exchange_queue_and_put_error_to_queue () { // Arrange IConnection connection; var connectionFactory = CreateMockConnectionFactory("/", out connection); var model = Substitute.For<IModel>(); connection.CreateModel().Returns(model); var basicProperies = Substitute.For<IBasicProperties>(); model.CreateBasicProperties().Returns(basicProperies); var handler = new ConsumerErrorHandler(connectionFactory, Substitute.For<ISerializer>(), Substitute.For<IRabbitWatcher>()); // Action handler.HandleError(new BasicDeliverEventArgs{Body = new byte[0], BasicProperties = basicProperies}, new Exception()); // Assert model.Received().BasicPublish(Arg.Any<string>(), string.Empty, basicProperies, Arg.Any<byte[]>()); }
public virtual ITunnel Create(string hostName, string virtualHost, string username, string password, IRabbitWatcher watcher) { var connectionFactory = new RabbitMQ.Client.ConnectionFactory { HostName = hostName, VirtualHost = virtualHost, UserName = username, Password = password }; var durableConnection = new DurableConnection(new DefaultRetryPolicy(), watcher, connectionFactory); var errorHandler = new ConsumerErrorHandler(connectionFactory, Global.DefaultSerializer, Global.DefaultWatcher); var consumerManager = new ConsumerManager(watcher, errorHandler, Global.DefaultSerializer, Global.DefaultConsumerBatchSize); return new RabbitTunnel(consumerManager, watcher, Global.DefaultRouteFinder, durableConnection, Global.DefaultSerializer, Global.DefaultCorrelationIdGenerator, Global.DefaultPersistentMode); }