public void Run(string username)
        {
            var configuration = new BusConfiguration();

            configuration.AssembliesToScan(AllAssemblies.Except("ServiceControl.Plugin"));
            configuration.EnableInstallers(username);

            var containerBuilder = new ContainerBuilder();
            var loggingSettings  = new LoggingSettings(settings.ServiceName);

            containerBuilder.RegisterInstance(loggingSettings);
            var documentStore = new EmbeddableDocumentStore();

            containerBuilder.RegisterInstance(documentStore).As <IDocumentStore>().ExternallyOwned();
            containerBuilder.RegisterInstance(settings);

            containerBuilder.RegisterModule <MigrationsModule>();

            using (documentStore)
                using (var container = containerBuilder.Build())
                    using (NServiceBusFactory.Create(settings, container, null, documentStore, configuration))
                    {
                        container.Resolve <MigrationsManager>().ApplyMigrations();
                    }
        }
        public void Should_exclude_by_name_without_extension()
        {
            var found = AllAssemblies.Except("rhino.mocks").ToArray();

            Assert.False(
                found.Any(a => a.GetName().Name == "Rhino.Mocks"));
        }
Example #3
0
        public void Run(string username)
        {
            var configuration = new BusConfiguration();

            configuration.AssembliesToScan(AllAssemblies.Except("ServiceControl.Plugin"));
            configuration.EnableInstallers(username);

            if (settings.SkipQueueCreation)
            {
                log.Info("Skipping queue creation");
                configuration.DoNotCreateQueues();
            }

            var containerBuilder = new ContainerBuilder();

            var domainEvents = new DomainEvents();

            containerBuilder.RegisterInstance(domainEvents).As <IDomainEvents>();
            var loggingSettings = new LoggingSettings(settings.ServiceName);

            containerBuilder.RegisterInstance(loggingSettings);
            var documentStore = new EmbeddableDocumentStore();

            containerBuilder.RegisterInstance(documentStore).As <IDocumentStore>().ExternallyOwned();
            containerBuilder.RegisterInstance(settings);

            using (documentStore)
                using (var container = containerBuilder.Build())
                    using (NServiceBusFactory.Create(settings, container, null, documentStore, configuration, false))
                    {
                    }
        }
Example #4
0
        private void Initialize()
        {
            var loggingSettings = new LoggingSettings(settings.ServiceName);

            ConfigureLogging(loggingSettings);

            // .NET default limit is 10. RavenDB in conjunction with transports that use HTTP exceeds that limit.
            ServicePointManager.DefaultConnectionLimit = settings.HttpDefaultConnectionLimit;

            timeKeeper = new TimeKeeper();

            var containerBuilder = new ContainerBuilder();

            containerBuilder.RegisterType <MessageStreamerConnection>().SingleInstance();
            containerBuilder.RegisterInstance(loggingSettings);
            containerBuilder.RegisterInstance(settings);
            containerBuilder.RegisterInstance(notifier).ExternallyOwned();
            containerBuilder.RegisterInstance(timeKeeper).ExternallyOwned();
            containerBuilder.RegisterType <SubscribeToOwnEvents>().PropertiesAutowired().SingleInstance();
            containerBuilder.RegisterInstance(documentStore).As <IDocumentStore>().ExternallyOwned();

            if (configuration == null)
            {
                configuration = new BusConfiguration();
                configuration.AssembliesToScan(AllAssemblies.Except("ServiceControl.Plugin"));
            }

            container = containerBuilder.Build();
            Startup   = new Startup(container);
            DomainEvents.Container = container;
        }
Example #5
0
        void RunAndWait(HostArguments args)
        {
            var busConfiguration = new BusConfiguration();

            busConfiguration.AssembliesToScan(AllAssemblies.Except("ServiceControl.Plugin"));
            var settings = new Settings
            {
                IngestAuditMessages = false,
                IngestErrorMessages = false
            };

            var tokenSource = new CancellationTokenSource();

            var loggingSettings = new LoggingSettings(settings.ServiceName, LogLevel.Info, LogLevel.Info);
            var bootstrapper    = new Bootstrapper(() => { tokenSource.Cancel(); }, settings, busConfiguration, loggingSettings);
            var bus             = (UnicastBus)bootstrapper.Start().Bus;

            Console.CancelKeyPress += (sender, eventArgs) =>
            {
                tokenSource.Cancel();
            };

            var importTask = bus.Builder.Build <ImportFailedAudits>().Run(tokenSource);

            Console.WriteLine("Press Ctrl+C to exit");
            importTask.GetAwaiter().GetResult();
        }
Example #6
0
        public ScanningPublicApi()
        {
            IEnumerable <Assembly> myListOfAssemblies = null;

            Assembly assembly2 = null;
            Assembly assembly1 = null;

            IEnumerable <Type> myTypes = null;

            #region ScanningDefault
            Configure.With();
            #endregion

            #region ScanningListOfAssemblies
            Configure.With(myListOfAssemblies);
            // or
            Configure.With(assembly1, assembly2);
            #endregion

            #region ScanningCustomDirectory
            Configure.With(@"c:\my-custom-dir");
            #endregion

            #region ScanningListOfTypes
            Configure.With(myTypes);
            #endregion

            #region ScanningExcludeByName
            Configure.With(AllAssemblies.Except("MyAssembly1.dll").And("MyAssembly2.dll"));
            #endregion
        }
Example #7
0
        static void InstallInfrastructure()
        {
            Configure.With(AllAssemblies.Except("NServiceBus.Host32.exe"));

            var installer = new Installer <Installation.Environments.Windows>(WindowsIdentity.GetCurrent());

            installer.InstallInfrastructureInstallers();
        }
Example #8
0
    public ScanningPublicApi()
    {
        IEnumerable <Assembly> myListOfAssemblies = null;

        Assembly assembly2 = null;
        Assembly assembly1 = null;

        IEnumerable <Type> myTypes = null;


        #region ScanningDefault

        var configuration = new BusConfiguration();

        #endregion

        #region ScanningListOfAssemblies

        configuration.AssembliesToScan(myListOfAssemblies);

        #endregion

        #region ScanningParamArrayOfAssemblies

        configuration.AssembliesToScan(assembly1, assembly2);

        #endregion

        #region ScanningCustomDirectory

        configuration.ScanAssembliesInDirectory(@"c:\my-custom-dir");

        #endregion

        #region ScanningListOfTypes

        configuration.TypesToScan(myTypes);

        #endregion

        #region ScanningExcludeByName

        configuration.AssembliesToScan(AllAssemblies.Except("MyAssembly.dll").And("MyAssembly.dll"));

        #endregion

        #region ScanningIncludeByPattern

        configuration.AssembliesToScan(AllAssemblies.Matching("MyCompany.").And("SomethingElse"));

        #endregion

        #region ScanningMixingIncludeAndExclude

        configuration.AssembliesToScan(AllAssemblies.Matching("MyCompany.").Except("BadAssembly.dll"));

        #endregion
    }
        public static IStartableBus Create(Settings.Settings settings, IContainer container, Action onCriticalError, IDocumentStore documentStore, BusConfiguration configuration, bool isRunningAcceptanceTests)
        {
            if (configuration == null)
            {
                configuration = new BusConfiguration();
                configuration.AssembliesToScan(AllAssemblies.Except("ServiceControl.Plugin"));
            }

            // HACK: Yes I know, I am hacking it to pass it to RavenBootstrapper!
            configuration.GetSettings().Set("ServiceControl.EmbeddableDocumentStore", documentStore);
            configuration.GetSettings().Set("ServiceControl.Settings", settings);
            configuration.GetSettings().Set("ServiceControl.MarkerFileService", new MarkerFileService(new LoggingSettings(settings.ServiceName).LogPath));

            // Disable Auditing for the service control endpoint
            configuration.DisableFeature <Audit>();
            configuration.DisableFeature <AutoSubscribe>();
            configuration.DisableFeature <SecondLevelRetries>();
            configuration.DisableFeature <TimeoutManager>();
            configuration.DisableFeature <Outbox>();

            configuration.UseSerialization <JsonSerializer>();

            configuration.Transactions()
            .DisableDistributedTransactions()
            .DoNotWrapHandlersExecutionInATransactionScope();

            configuration.ScaleOut().UseSingleBrokerQueue();

            var transportType = DetermineTransportType(settings);

            configuration.Conventions().DefiningEventsAs(t => typeof(IEvent).IsAssignableFrom(t) || IsExternalContract(t));
            configuration.EndpointName(settings.ServiceName);

            if (!isRunningAcceptanceTests)
            {
                configuration.ReportCustomChecksTo(settings.ServiceName);
            }

            configuration.UseContainer <AutofacBuilder>(c => c.ExistingLifetimeScope(container));
            var transport = configuration.UseTransport(transportType);

            if (settings.TransportConnectionString != null)
            {
                transport.ConnectionString(settings.TransportConnectionString);
            }
            configuration.DefineCriticalErrorAction((s, exception) =>
            {
                onCriticalError();
            });

            if (Environment.UserInteractive && Debugger.IsAttached)
            {
                configuration.EnableInstallers();
            }

            return(Bus.Create(configuration));
        }
        public Configure GetConfiguration(RunDescriptor runDescriptor, EndpointConfiguration endpointConfiguration, IConfigurationSource configSource)
        {
            Configure.Serialization.Xml();

            return(Configure.With(AllAssemblies.Except(Assembly.GetExecutingAssembly().FullName))
                   .DefaultBuilder()
                   .UseTransport <Msmq>()
                   .UnicastBus());
        }
Example #11
0
        void CustomConfigOverrides(BusConfiguration busConfiguration)
        {
            #region 4to5CustomConfigOverrides

            busConfiguration.AssembliesToScan(AllAssemblies.Except("NotThis.dll"));
            busConfiguration.Conventions().DefiningEventsAs(type => type.Name.EndsWith("Event"));
            busConfiguration.EndpointName("MyEndpointName");

            #endregion
        }
Example #12
0
        void ScanningExcludeByName()
        {
            #region ScanningExcludeByName

            var excludesBuilder = AllAssemblies
                                  .Except("MyAssembly1.dll")
                                  .And("MyAssembly2.dll");
            Configure.With(excludesBuilder);

            #endregion
        }
Example #13
0
        protected override void OnStart(string[] args)
        {
            var busConfiguration = new BusConfiguration();

            busConfiguration.AssembliesToScan(AllAssemblies.Except("ServiceControl.Plugin"));

            var loggingSettings = new LoggingSettings(ServiceName);

            bootstrapper = new Bootstrapper(Stop, new Settings(ServiceName), busConfiguration, loggingSettings);
            bootstrapper.Start();
        }
        void ScanningExcludeByName(BusConfiguration busConfiguration)
        {
            #region ScanningExcludeByName

            var excludesBuilder = AllAssemblies
                                  .Except("MyAssembly1.dll")
                                  .And("MyAssembly2.dll");
            busConfiguration.AssembliesToScan(excludesBuilder);

            #endregion
        }
        public void Init()
        {
            Console.SetWindowSize(70, 30);
            SetWindowPos(ConsolePtr, 0, 10, 420, 0, 0, SwpNosize);

            Configure.With(AllAssemblies.Except("Raven.Backup.exe"))
            .DefaultBuilder()
            .DefiningCommandsAs(t => t.Namespace != null && t.Namespace.StartsWith("SiriusCyberneticsCorp.InternalMessages.Complaint"))
            .DefiningEventsAs(t => t.Namespace != null && t.Namespace.StartsWith("SiriusCyberneticsCorp.Contract.Facility"))
            .JsonSerializer();
        }
        void ScanningExcludeByName()
        {
            #region ScanningExcludeByName

            var allAssemblies = AllAssemblies
                                .Except("MyAssembly1.dll")
                                .And("MyAssembly2.dll");
            Configure.With(allAssemblies);

            #endregion
        }
        public void Simple()
        {
            #region CustomConfigOverrides

            Configure configure = Configure.With(AllAssemblies.Except("NotThis.dll"))
                                  .DefaultBuilder();
            configure.DefineEndpointName("MyEndpointName");
            configure.DefiningEventsAs(type => type.Name.EndsWith("Event"));

            #endregion
        }
        public void Register(IWindsorContainer container)
        {
            Configure.With(AllAssemblies.Except("sybdrvado20.dll"))
            .CastleWindsor250Builder(container)
            .XmlSerializer();

            container.Register(
                AllTypes.FromAssemblyNamed("SqlMonitor.DataServices").Pick()
                .WithService.FirstInterface());

            container.Register(Component.For <SmtpClient>().Instance(new SmtpClient()));
        }
        public void Simple()
        {
            #region CustomConfigOverrides

            BusConfiguration busConfiguration = new BusConfiguration();

            busConfiguration.AssembliesToScan(AllAssemblies.Except("NotThis.dll"));
            busConfiguration.Conventions().DefiningEventsAs(type => type.Name.EndsWith("Event"));
            busConfiguration.EndpointName("MyEndpointName");

            #endregion
        }
        public void ScanningExcludeByName()
        {
            BusConfiguration busConfiguration = new BusConfiguration();

            #region ScanningExcludeByName

            IExcludesBuilder excludesBuilder = AllAssemblies
                                               .Except("MyAssembly1.dll")
                                               .And("MyAssembly2.dll");
            busConfiguration.AssembliesToScan(excludesBuilder);

            #endregion
        }
Example #21
0
    public void Simple()
    {
        #region CustomConfigOverridesV5

        var configure = Configure.With(b =>
        {
            b.AssembliesToScan(AllAssemblies.Except("NotThis.dll"));
            b.Conventions(c => c.DefiningEventsAs(type => type.Name.EndsWith("Event")));
            b.EndpointName("MyEndpointName");
            b.EndpointVersion("1.2.3");
        });

        #endregion
    }
        void CustomConfigOverrides()
        {
            #region 4to5CustomConfigOverrides

            var configure = Configure.With(AllAssemblies.Except("NotThis.dll"));
            configure.DefaultBuilder();
            configure.DefineEndpointName("MyEndpointName");
            configure.DefiningEventsAs(type =>
            {
                return(type.Name.EndsWith("Event"));
            });

            #endregion
        }
        private static IEnumerable <Assembly> AssembliesToScan()
        {
            var result = AllAssemblies.Except(AssembliesToSkip()[0]);

            AssembliesToSkip().Skip(1).ForEach(x => result.And(x));
            var excludedAssemblyNames = ObjectFactory.TryGetInstance <IExcludedAssemblyNamesSource>();

            if (excludedAssemblyNames != null)
            {
                result = excludedAssemblyNames.Aggregate(result,
                                                         (current, excludedAssemblyName) => current.And(excludedAssemblyName));
            }

            return(result.ToArray());
        }
        public void Install(IWindsorContainer container, IConfigurationStore store)
        {
            container.Register(Component.For <ISendOnlyBus>().UsingFactoryMethod((kernel, componentModel) =>
            {
                var configuration = new BusConfiguration();
                configuration.EndpointName("CleanAir.UI");
                configuration.EnableInstallers();
                configuration.Transactions().DisableDistributedTransactions();
                configuration.UseSerialization <NServiceBus.JsonSerializer>();

                configuration.UseTransport <RabbitMQTransport>();
                configuration.UsePersistence <InMemoryPersistence>();
                configuration.AssembliesToScan(AllAssemblies.Except("ClearScript"));
                return(Bus.CreateSendOnly(configuration));
            }));
        }
        void ScanningExcludeTypes(BusConfiguration busConfiguration)
        {
            #region ScanningExcludeTypes

            var allTypes = from a in AllAssemblies.Except("Dummy")
                           from t in a.GetTypes()
                           select t;

            var allowedTypesToScan = allTypes
                                     .Where(t => t != typeof(GenericHandler))
                                     .ToList();

            busConfiguration.TypesToScan(allowedTypesToScan);

            #endregion
        }
        public static BusConfiguration CreateAzureBusConfiguration(string azureSBConnection, bool useOutbox, bool disableTx)
        {
            if (disableTx && useOutbox)
            {
                throw new ArgumentException("Cannot use Outbox when transactions are disabled");
            }

            BusConfiguration busConfiguration = CreateAmbientTxConfiguration();

            if (useOutbox)
            {
                busConfiguration.EnableOutbox();
                Console.WriteLine("Default Configuration overridden: Using Outbox");
            }

            if (disableTx)
            {
                // A validation error will occur if NServiceBus detects SQL Transport, even if it not being used.
                // Explicitly remove NServiceBus SQL Transport from the assembly scanning
                busConfiguration.Transactions().DisableDistributedTransactions();
                IExcludesBuilder excludesBuilder = AllAssemblies
                                                   .Except("NServiceBus.Transports.SQLServer.dll");
                busConfiguration.AssembliesToScan(excludesBuilder);

                // Using different databases only work when transaction are disabled
                ConfigureHibernate(busConfiguration, DB_SHARED_CONNECTION);

                Console.WriteLine("Default Configuration overridden: Using Transport transaction only");
            }
            else
            {
                ConfigureHibernate(busConfiguration, DB_BUSINESS_CONNECTION);

                busConfiguration.Transactions().Enable().EnableDistributedTransactions();

                Console.WriteLine("Default Configuration: Using Ambient Transactions");
            }

            busConfiguration.UseTransport <AzureServiceBusTransport>()
            .ConnectionString(azureSBConnection);

            Console.WriteLine("Default Configuration overridden: Using Azure Tranport");

            return(busConfiguration);
        }
Example #27
0
        public ScanningPublicApiV4()
        {
            IEnumerable <Assembly> myListOfAssemblies = null;

            Assembly assembly2 = null;
            Assembly assembly1 = null;

            IEnumerable <Type> myTypes = null;

            #region ScanningDefaultV4
            Configure.With();
            #endregion


            #region ScanningListOfAssembliesV4
            Configure.With(myListOfAssemblies);
            #endregion

            #region ScanningParamArrayOfAssembliesV4
            Configure.With(assembly1, assembly2);
            #endregion


            #region ScanningCustomDirectoryV4
            Configure.With(@"c:\my-custom-dir");
            #endregion


            #region ScanningListOfTypesV4
            Configure.With(myTypes);
            #endregion

            #region ScanningExcludeByNameV4
            Configure.With(AllAssemblies.Except("MyAssembly.dll").And("MyAssembly.dll"));
            #endregion

            #region ScanningIncludeByPatternV4
            Configure.With(AllAssemblies.Matching("MyCompany.").And("SomethingElse"));
            #endregion


            #region ScanningMixingIncludeAndExcludeV4
            Configure.With(AllAssemblies.Matching("MyCompany.").Except("BadAssembly.dll"));
            #endregion
        }
Example #28
0
        private IBus ConfigureNServiceBus()
        {
            var configuration = new BusConfiguration();

            configuration.AssembliesToScan(AllAssemblies.Except("MediaLoanLIbrary.Fines.Common"));
            configuration.EndpointName("IntegrationTesting");
            configuration.DisableFeature <Sagas>();
            configuration.DisableFeature <TimeoutManager>();
            configuration.DisableFeature <AutoSubscribe>();
            configuration.DisableFeature <InMemorySubscriptionPersistence>();
            configuration.DisableFeature <StorageDrivenPublishing>();
            configuration.UsePersistence <InMemoryPersistence>();
            configuration.PurgeOnStartup(true);
            configuration.Conventions()
            .DefiningCommandsAs(type => UnobtrusiveMessageConventions.CommandsDefinition(type) || (UnobtrusiveMessageConventions.EventsDefinition(type) && type.Namespace.Contains(".Loans.")))
            .DefiningEventsAs(type => UnobtrusiveMessageConventions.EventsDefinition(type) && !type.Namespace.Contains(".Loans."));
            configuration.EnableInstallers();
            return(Bus.Create(configuration).Start());
        }
Example #29
0
        public static IBus Setup(ILifetimeScope container)
        {
            LogManager.Use <DefaultFactory>();

            var configuration = new BusConfiguration();

            configuration.EndpointName("APIComparer.Website");
            configuration.UseContainer <AutofacBuilder>(x => x.ExistingLifetimeScope(container));
            configuration.AssembliesToScan(AllAssemblies.Except("Microsoft.Windows.Azure.Storage"));

            configuration.UseTransport <AzureStorageQueueTransport>()
            .ConnectionString(AzureEnvironment.GetConnectionString);
            configuration.UsePersistence <AzureStoragePersistence>();
            configuration.DisableFeature <SecondLevelRetries>();
            configuration.DisableFeature <Sagas>();
            configuration.DisableFeature <TimeoutManager>();
            configuration.EnableInstallers();

            return(Bus.Create(configuration).Start());
        }
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            var configuration = new BusConfiguration();

            configuration.EndpointName("web");
            configuration.UseTransport <MsmqTransport>();
            configuration.UseSerialization <JsonSerializer>();
            configuration.UsePersistence <InMemoryPersistence>();
            configuration.AssembliesToScan(AllAssemblies.Except("Razor"));
            configuration
            .Conventions()
            .DefiningCommandsAs(type => FilterByName(type, "Command"))
            .DefiningEventsAs(type => FilterByName(type, "Event"));

            Bus = NServiceBus.Bus.CreateSendOnly(configuration);
        }