private Task<Bus> BuildMeABus() { return Task.Run(() => { // Filter types we care about to only our own test's namespace. It's a performance optimisation because creating and // deleting queues and topics is slow. var typeProvider = new TestHarnessTypeProvider(new[] {GetType().Assembly}, new[] {GetType().Namespace}); var messageBroker = new DefaultMessageHandlerFactory(typeProvider); var logger = new ConsoleLogger(); var bus = new BusBuilder().Configure() .WithNames("IntegrationTestHarness", Environment.MachineName) .WithConnectionString(CommonResources.ConnectionString) .WithTypesFrom(typeProvider) .WithCommandHandlerFactory(messageBroker) .WithRequestHandlerFactory(messageBroker) .WithMulticastEventHandlerFactory(messageBroker) .WithCompetingEventHandlerFactory(messageBroker) .WithMulticastRequestHandlerFactory(messageBroker) .WithDefaultTimeout(TimeSpan.FromSeconds(10)) .WithLogger(logger) .Build(); bus.ShouldNotBe(null); bus.Start(); return bus; }); }
public IBus Create() { var messageBroker = new DefaultMessageHandlerFactory(_typeProvider); var bus = TestHarnessBusFactory.CreateAndStart(_typeProvider, messageBroker); return bus; }
private void ClearMeABus() { // Filter types we care about to only our own test's namespace. It's a performance optimisation because creating and // deleting queues and topics is slow. var typeProvider = new TestHarnessTypeProvider(new[] {GetType().Assembly}, new[] {"Some.Namespace.That.Does.Not.Exist"}); var messageBroker = new DefaultMessageHandlerFactory(typeProvider); var logger = new ConsoleLogger(); var busBuilder = new BusBuilder().Configure() .WithNames("IntegrationTestHarness", Environment.MachineName) .WithConnectionString(CommonResources.ConnectionString) .WithTypesFrom(typeProvider) .WithCommandHandlerFactory(messageBroker) .WithRequestHandlerFactory(messageBroker) .WithMulticastEventHandlerFactory(messageBroker) .WithCompetingEventHandlerFactory(messageBroker) .WithMulticastRequestHandlerFactory(messageBroker) .WithDefaultTimeout(TimeSpan.FromSeconds(10)) .WithLogger(logger) .WithDebugOptions( dc => dc.RemoveAllExistingNamespaceElementsOnStartup( "I understand this will delete EVERYTHING in my namespace. I promise to only use this for test suites.")) ; using (var bus = busBuilder.Build()) { bus.Start(); } }
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 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, 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 static BusBuilderConfiguration WithDefaultHandlerFactory(this BusBuilderConfiguration configuration, DefaultMessageHandlerFactory messageHandlerFactory) { configuration .WithCommandHandlerFactory(messageHandlerFactory) .WithRequestHandlerFactory(messageHandlerFactory) .WithMulticastRequestHandlerFactory(messageHandlerFactory) .WithCompetingEventHandlerFactory(messageHandlerFactory) .WithMulticastEventHandlerFactory(messageHandlerFactory); return configuration; }
public override ITunnel Create(string hostName, string virtualHost, string username, string password, IRabbitWatcher watcher) { var rabbitWatcher = watcher ?? _burrowResolver.Resolve <IRabbitWatcher>() ?? Global.DefaultWatcher; var serializer = _burrowResolver.Resolve <ISerializer>() ?? Global.DefaultSerializer; var connectionFactory = new RabbitMQ.Client.ConnectionFactory { HostName = hostName, VirtualHost = virtualHost, UserName = username, Password = password }; var durableConnection = new DurableConnection(_burrowResolver.Resolve <IRetryPolicy>() ?? new DefaultRetryPolicy(), rabbitWatcher, connectionFactory); var abc = new ObjectObserver <IObserver <ISerializer> >(); Func <IConsumerErrorHandler> errorHandler = () => { var handdler = new ConsumerErrorHandler(connectionFactory, serializer, rabbitWatcher); abc.FireEvent(handdler); return(handdler); }; Func <IMessageHandlerFactory> handlerFactory = () => { var factory = new DefaultMessageHandlerFactory(_burrowResolver.Resolve <IConsumerErrorHandler>() ?? errorHandler(), serializer, rabbitWatcher); abc.FireEvent(factory); return(factory); }; Func <IConsumerManager> consumerManager = () => { var manager = new ConsumerManager(rabbitWatcher, _burrowResolver.Resolve <IMessageHandlerFactory>() ?? handlerFactory(), serializer); abc.FireEvent(manager); return(manager); }; var tunnel = new RabbitTunnel(_burrowResolver.Resolve <IConsumerManager>() ?? consumerManager(), rabbitWatcher, _burrowResolver.Resolve <IRouteFinder>() ?? new DefaultRouteFinder(), durableConnection, serializer, _burrowResolver.Resolve <ICorrelationIdGenerator>() ?? Global.DefaultCorrelationIdGenerator, Global.DefaultPersistentMode); abc.ObjectCreated += tunnel.AddSerializerObserver; return(tunnel); }
public void DoFoo() { var typeProvider = new AssemblyScanningTypeProvider(Assembly.GetExecutingAssembly()); IMulticastEventHandlerFactory multicastEventHandlerFactory = new DefaultMessageHandlerFactory(typeProvider); var bus = new BusBuilder().Configure() .WithConnectionString("foo") .WithNames("MyApp", Environment.MachineName) .WithTypesFrom(typeProvider) .WithMulticastEventHandlerFactory(multicastEventHandlerFactory) .Build(); }
public static Bus CreateAndStart(ITypeProvider typeProvider, DefaultMessageHandlerFactory messageHandlerFactory) { var logger = new ConsoleLogger(); var bus = new BusBuilder().Configure() .WithNames("MyTestSuite", Environment.MachineName) .WithConnectionString(CommonResources.ConnectionString) .WithTypesFrom(typeProvider) .WithDefaultHandlerFactory(messageHandlerFactory) .WithDefaultTimeout(TimeSpan.FromSeconds(10)) .WithLogger(logger) .WithDebugOptions( dc => dc.RemoveAllExistingNamespaceElementsOnStartup( "I understand this will delete EVERYTHING in my namespace. I promise to only use this for test suites.")) .Build(); bus.Start(); return bus; }
private ITunnel Create(DurableConnection durableConnection, ISerializer serializer, IRabbitWatcher rabbitWatcher) { var abc = new ObjectObserver <IObserver <ISerializer> >(); Func <IConsumerErrorHandler> errorHandler = () => { var handdler = new ConsumerErrorHandler(durableConnection, serializer, rabbitWatcher); abc.FireEvent(handdler); return(handdler); }; Func <IMessageHandlerFactory> handlerFactory = () => { var factory = new DefaultMessageHandlerFactory(_burrowResolver.Resolve <IConsumerErrorHandler>() ?? errorHandler(), serializer, rabbitWatcher); abc.FireEvent(factory); return(factory); }; Func <IConsumerManager> consumerManager = () => { var manager = new ConsumerManager(rabbitWatcher, _burrowResolver.Resolve <IMessageHandlerFactory>() ?? handlerFactory(), serializer); abc.FireEvent(manager); return(manager); }; var tunnel = new RabbitTunnel(_burrowResolver.Resolve <IConsumerManager>() ?? consumerManager(), rabbitWatcher, _burrowResolver.Resolve <IRouteFinder>() ?? new DefaultRouteFinder(), durableConnection, serializer, _burrowResolver.Resolve <ICorrelationIdGenerator>() ?? Global.DefaultCorrelationIdGenerator, Global.DefaultPersistentMode); abc.ObjectCreated += tunnel.AddSerializerObserver; return(tunnel); }
public async Task ItShouldGoBangQuickly() { var typeProvider = new TestHarnessTypeProvider(new[] {GetType().Assembly}, new[] {GetType().Namespace}); var messageBroker = new DefaultMessageHandlerFactory(typeProvider); var logger = new ConsoleLogger(); var bus = new BusBuilder().Configure() .WithNames("IntegrationTestHarness", Environment.MachineName) .WithConnectionString(@"Endpoint=sb://shouldnotexist.example.com/;SharedAccessKeyName=IntegrationTestHarness;SharedAccessKey=borkborkbork=") .WithTypesFrom(typeProvider) .WithCommandHandlerFactory(messageBroker) .WithRequestHandlerFactory(messageBroker) .WithMulticastEventHandlerFactory(messageBroker) .WithCompetingEventHandlerFactory(messageBroker) .WithMulticastRequestHandlerFactory(messageBroker) .WithDefaultTimeout(TimeSpan.FromSeconds(10)) .WithLogger(logger) .Build(); Should.Throw<BusException>(bus.Start); }
private static void Main(string[] args) { // This is how you tell Nimbus where to find all your message types and handlers. var typeProvider = new AssemblyScanningTypeProvider(Assembly.GetExecutingAssembly(), typeof (NewOrderRecieved).Assembly, typeof (OrderPizzaCommand).Assembly); var messageBroker = new DefaultMessageHandlerFactory(typeProvider); var connectionString = ConfigurationManager.AppSettings["AzureConnectionString"]; var bus = new BusBuilder().Configure() .WithNames("Ordering", Environment.MachineName) .WithConnectionString(connectionString) .WithTypesFrom(typeProvider) .WithDefaultHandlerFactory(messageBroker) .WithDefaultTimeout(TimeSpan.FromSeconds(10)) .Build(); bus.Start(); while (true) { Console.WriteLine(); Console.WriteLine("Press 1 to get the current wait time."); Console.WriteLine("Press 2 to order a pizza."); Console.WriteLine("Press 3 to Quit."); var input = Console.ReadLine(); switch (input) { case "1": HowLongDoesAPizzaTake(bus); break; case "2": Console.WriteLine("What's the customer's name?"); var customerName = Console.ReadLine().Trim(); if (string.IsNullOrWhiteSpace(customerName)) { Console.WriteLine("You need to enter a customer name."); continue; } var command = new OrderPizzaCommand {CustomerName = customerName}; bus.Send(command); Console.WriteLine("Pizza ordered for {0}", customerName); break; case "3": bus.Stop(); return; default: continue; } } }