private async Task <Bus> BuildMeABus(IConfigurationScenario <TransportConfiguration> scenario) { var typeProvider = new TestHarnessTypeProvider(new[] { GetType().Assembly }, new[] { GetType().Namespace }); using (var instance = scenario.CreateInstance()) { var transportConfiguration = instance.Configuration; var configuration = new BusBuilder().Configure() .WithTransport(transportConfiguration) .WithRouter(new DestinationPerMessageTypeRouter()) .WithSerializer(new JsonSerializer()) .WithDeliveryRetryStrategy(new ImmediateRetryDeliveryStrategy()) .WithDependencyResolver(new DependencyResolver(typeProvider)) .WithNames("MyTestSuite", Environment.MachineName) .WithTypesFrom(typeProvider) .WithDefaultTimeout(TimeSpan.FromSeconds(10)) .WithHeartbeatInterval(TimeSpan.MaxValue) .WithLogger(_logger) ; var bus = configuration.Build(); await bus.Start(); await bus.Stop(); return(bus); } }
private async Task 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 logger = TestHarnessLoggerFactory.Create(); var busBuilder = new BusBuilder().Configure() .WithNames("IntegrationTestHarness", Environment.MachineName) .WithConnectionString(CommonResources.ServiceBusConnectionString) .WithTypesFrom(typeProvider) .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()) { await bus.Start(); } }
public IServiceBus CreateServiceBus() { _log.InfoFormat("MassTransit v{0}, .NET Framework v{1}", typeof(ServiceBusFactory).Assembly.GetName().Version, Environment.Version); IEndpointCache endpointCache = CreateEndpointCache(); _settings.EndpointCache = endpointCache; BusBuilder builder = _builderFactory(_settings); _subscriptionRouterConfigurator.SetNetwork(_settings.Network); // run through all configurators that have been set and let // them do their magic foreach (BusBuilderConfigurator configurator in _configurators) { builder = configurator.Configure(builder); } IServiceBus bus = builder.Build(); return(bus); }
private async Task ClearMeABus(IConfigurationScenario <TransportConfiguration> scenario) { using (var instance = scenario.CreateInstance()) { // We want a namespace that doesn't exist here so that all the queues and topics are removed. var typeProvider = new TestHarnessTypeProvider(new[] { GetType().Assembly }, new[] { "Some.Namespace.That.Does.Not.Exist" }); var transportConfiguration = instance.Configuration; var busBuilder = new BusBuilder().Configure() .WithTransport(transportConfiguration) .WithRouter(new DestinationPerMessageTypeRouter()) .WithSerializer(new JsonSerializer()) .WithDeliveryRetryStrategy(new ImmediateRetryDeliveryStrategy()) .WithDependencyResolver(new DependencyResolver(typeProvider)) .WithNames("MyTestSuite", Environment.MachineName) .WithTypesFrom(typeProvider) .WithDefaultTimeout(TimeSpan.FromSeconds(TimeoutSeconds)) .WithHeartbeatInterval(TimeSpan.MaxValue) .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()) { await bus.Start(); await bus.Stop(); } } }
public static IWebHost SubscribeToEvent <TEvent>(this BusBuilder busBuilder) where TEvent : IEvent { var handler = (IEventHandler <TEvent>)busBuilder.WebHost.Services .GetService(typeof(IEventHandler <TEvent>)); busBuilder.BusClient.WithEventHandlerAsync(handler); return(busBuilder.Build().Webhost); }
public void WhenCreateGivenSameMessageTypeConfiguredTwiceForTopicAndForQueueThenConfigurationExceptionThrown() { // arrange BusBuilder.Produce <SomeMessage>(x => x.ToTopic()); BusBuilder.Produce <SomeMessage>(x => x.ToQueue()); // act Func <IMessageBus> creation = () => BusBuilder.Build(); // assert creation.Should().Throw <ConfigurationMessageBusException>() .WithMessage($"The produced message type '{typeof(SomeMessage).FullName}' was declared more than once*"); }
public void WhenCreateGivenSameDefaultNameUsedForTopicAndForQueueThenConfigurationExceptionThrown() { // arrange const string name = "the-same-name"; BusBuilder.Produce <SomeMessage>(x => x.DefaultTopic(name)); BusBuilder.Produce <OtherMessage>(x => x.DefaultQueue(name)); // act Func <IMessageBus> creation = () => BusBuilder.Build(); // assert creation.Should().Throw <ConfigurationMessageBusException>() .WithMessage($"The same name '{name}' was used for queue and topic*"); }
public IServiceBus CreateServiceBus() { LogAssemblyVersionInformation(); IEndpointCache endpointCache = CreateEndpointCache(); _settings.EndpointCache = endpointCache; BusBuilder builder = _builderFactory(_settings); _subscriptionRouterConfigurator.SetNetwork(_settings.Network); // run through all configurators that have been set and let // them do their magic foreach (BusBuilderConfigurator configurator in _configurators) { builder = configurator.Configure(builder); } IServiceBus bus = builder.Build(); return(bus); }
public ServiceBusMessageBusTests() { BusBuilder.WithSerializer(new Mock <IMessageSerializer>().Object); BusBuilder.WithDependencyResolver(new Mock <IDependencyResolver>().Object); ProviderBusSettings = new ServiceBusMessageBusSettings("connection-string") { QueueClientFactory = queue => { var m = new Mock <IQueueClient>(); QueueClientMockByName.Add(queue, m); return(m.Object); }, TopicClientFactory = topic => { var m = new Mock <ITopicClient>(); TopicClientMockByName.Add(topic, m); return(m.Object); } }; BusBuilder.WithProvider(mbSettings => new WrappedProviderMessageBus(mbSettings, ProviderBusSettings)); ProviderBus = new Lazy <WrappedProviderMessageBus>(() => (WrappedProviderMessageBus)BusBuilder.Build()); }