コード例 #1
0
        public BusConfiguration GetConfiguration(RunDescriptor runDescriptor, EndpointConfiguration endpointConfiguration, IConfigurationSource configSource, Action <BusConfiguration> configurationBuilderCustomization)
        {
            endpointConfiguration.AddressOfAuditQueue = Address.Parse("audit");

            ServicePointManager.DefaultConnectionLimit = 100;

            var settings = runDescriptor.Settings;

            NServiceBus.Logging.LogManager.Use <NLogFactory>();

            SetupLogging(endpointConfiguration);

            var transportToUse = AcceptanceTest.GetTransportIntegrationFromEnvironmentVar();
            var types          = GetTypesScopedByTestClass(transportToUse, endpointConfiguration).Concat(new[]
            {
                typeof(RegisterWrappers),
                typeof(SessionCopInBehavior),
                typeof(SessionCopInBehaviorForMainPipe),
                typeof(TraceIncomingBehavior),
                typeof(TraceOutgoingBehavior)
            });
            var builder = new BusConfiguration();

            builder.DisableFeature <AutoSubscribe>();
            builder.UsePersistence <InMemoryPersistence>();
            builder.EndpointName(endpointConfiguration.EndpointName);
            builder.TypesToScan(types);
            builder.CustomConfigurationSource(configSource);
            builder.EnableInstallers();
            builder.Conventions().DefiningEventsAs(t => typeof(IEvent).IsAssignableFrom(t) || IsExternalContract(t));
            builder.DefineTransport(transportToUse);
            builder.RegisterComponents(r =>
            {
                r.RegisterSingleton(runDescriptor.ScenarioContext.GetType(), runDescriptor.ScenarioContext);
                r.RegisterSingleton(typeof(ScenarioContext), runDescriptor.ScenarioContext);
            });
            builder.RegisterComponents(r =>
            {
                builder.GetSettings().Set("SC.ConfigureComponent", r);
            });
            builder.Pipeline.Register <SessionCopInBehavior.Registration>();
            builder.Pipeline.Register <SessionCopInBehaviorForMainPipe.Registration>();
            builder.Pipeline.Register <TraceIncomingBehavior.Registration>();
            builder.Pipeline.Register <TraceOutgoingBehavior.Registration>();

            var serializer = settings.GetOrNull("Serializer");

            if (serializer != null)
            {
                builder.UseSerialization(Type.GetType(serializer));
            }

            builder.GetSettings().SetDefault("ScaleOut.UseSingleBrokerQueue", true);
            builder.GetSettings().Set("SC.ScenarioContext", runDescriptor.ScenarioContext);
            configurationBuilderCustomization(builder);

            return(builder);
        }
コード例 #2
0
        public Configure GetConfiguration(RunDescriptor runDescriptor, EndpointConfiguration endpointConfiguration,
                                          IConfigurationSource configSource)
        {
            var settings = runDescriptor.Settings;

            var types = GetTypesToUse(endpointConfiguration);

            var transportToUse = AcceptanceTest.GetTransportIntegrationFromEnvironmentVar();

            SetupLogging(endpointConfiguration);

            Configure.Features.Enable <Sagas>();
            Configure.ScaleOut(_ => _.UseSingleBrokerQueue());

            AddMoreConfig();

            var config = Configure.With(types)
                         .DefiningEventsAs(t => typeof(IEvent).IsAssignableFrom(t) || IsExternalContract(t))
                         .DefineEndpointName(endpointConfiguration.EndpointName)
                         .CustomConfigurationSource(configSource)
                         .DefineBuilder(settings.GetOrNull("Builder"));

            SetSerializer(config);

            config
            .DefineTransport(transportToUse)
            .InMemorySagaPersister();


            if (transportToUse == null || transportToUse is MsmqTransportIntegration || transportToUse is SqlServerTransportIntegration ||
                transportToUse is RabbitMqTransportIntegration)
            {
                config.UseInMemoryTimeoutPersister();
            }

            if (transportToUse == null || transportToUse is MsmqTransportIntegration || transportToUse is SqlServerTransportIntegration)
            {
                config.InMemorySubscriptionStorage();
            }

            config.InMemorySagaPersister();

            return(config.UnicastBus());
        }