Пример #1
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
    }
        void ScanningListOfAssemblies(BusConfiguration busConfiguration, IEnumerable <Assembly> myListOfAssemblies, Assembly assembly2, Assembly assembly1)
        {
            #region ScanningListOfAssemblies

            busConfiguration.AssembliesToScan(myListOfAssemblies);
            // or
            busConfiguration.AssembliesToScan(assembly1, assembly2);

            #endregion
        }
        void ScanningListOfAssemblies(BusConfiguration busConfiguration, IEnumerable<Assembly> myListOfAssemblies, Assembly assembly2, Assembly assembly1)
        {
            #region ScanningListOfAssemblies

            busConfiguration.AssembliesToScan(myListOfAssemblies);
            // or
            busConfiguration.AssembliesToScan(assembly1, assembly2);

            #endregion
        }
        public ScanningPublicApi()
        {
            IEnumerable<Assembly> myListOfAssemblies = null;

            Assembly assembly2 = null;
            Assembly assembly1 = null; 

            IEnumerable<Type> myTypes = null;


            #region ScanningDefault

            BusConfiguration busConfiguration = new BusConfiguration();

            #endregion

            #region ScanningExcludeByName

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

            #endregion

            #region ScanningListOfTypes

            busConfiguration.TypesToScan(myTypes); 

            #endregion

            #region ScanningListOfAssemblies

            busConfiguration.AssembliesToScan(myListOfAssemblies);
            // or
            busConfiguration.AssembliesToScan(assembly1, assembly2);

            #endregion

            #region ScanningIncludeByPattern

            busConfiguration.AssembliesToScan(AllAssemblies.Matching("NServiceBus").And("MyCompany.").And("SomethingElse"));

            #endregion

            #region ScanningCustomDirectory

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

            #endregion

            #region ScanningMixingIncludeAndExclude

            busConfiguration.AssembliesToScan(AllAssemblies.Matching("NServiceBus").And("MyCompany.").Except("BadAssembly.dll"));

            #endregion

        }
        public void ScanningListOfAssemblies()
        {
            IEnumerable <Assembly> myListOfAssemblies = null;

            Assembly         assembly2        = null;
            Assembly         assembly1        = null;
            BusConfiguration busConfiguration = new BusConfiguration();

            #region ScanningListOfAssemblies

            busConfiguration.AssembliesToScan(myListOfAssemblies);
            // or
            busConfiguration.AssembliesToScan(assembly1, assembly2);

            #endregion
        }
Пример #6
0
 private static void ConfigureAssembliesToScan(BusConfiguration busConfiguration)
 {
     busConfiguration.AssembliesToScan(
         AllAssemblies.Matching("NServiceBus")
         .And("Messages")
         .And("Ui"));
 }
Пример #7
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();
        }
Пример #8
0
        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();
                    }
        }
Пример #9
0
        public static BusConfiguration GetConfiguration(string someConnectionString, string someOtherConnectionString, string serviceBusConnectionString)
        {
            if (_config == null)
            {
                var config = new BusConfiguration();

                config.UseContainer <UnityBuilder>(c => c.UseExistingContainer(getContainer(config, someConnectionString, someOtherConnectionString)));
                config.CustomConfigurationSource(new MyConfigSource(serviceBusConnectionString));

                config.AssembliesToScan(getAssembliesToScan());

                config.EndpointName("NSBUnityError.Sender");

                config.DisableFeature <TimeoutManager>();

                config.UseSerialization <JsonSerializer>();
                config.UseTransport <AzureServiceBusTransport>();
                config.UsePersistence <AzureStoragePersistence>();

                config.ScaleOut().UseSingleBrokerQueue();

                config.Conventions()
                .DefiningCommandsAs(t => t.Namespace != null && t.Namespace.StartsWith("NSBUnityError.Commands"));

                if (Debugger.IsAttached)
                {
                    config.EnableInstallers();
                }

                _config = config;
            }

            return(_config);
        }
        public static void ConfigureBus(IWindsorContainer container)
        {
            // Use NLog for logging
            NServiceBus.Logging.LogManager.Use<NLogFactory>();

            var configuration = new BusConfiguration();
            // Only scan known Messages assemblies rather than all assemblies in 'bin' - faster startup time.
            var messages = AppDomain.CurrentDomain.GetAssemblies()
                .Where(a => a.GetName().Name.EndsWith(".Messages"));
            configuration.AssembliesToScan(messages);
            // Use NServiceBus Unobtrusive Mode
            configuration.Conventions()
                .DefiningCommandsAs(t => t.Namespace != null && t.Namespace.EndsWith("Commands"))
                .DefiningEventsAs(t => t.Namespace != null && t.Namespace.EndsWith("Events"))
                .DefiningMessagesAs(t => t.Namespace != null && t.Namespace == "Messages")
                .DefiningDataBusPropertiesAs(p => p.Name.EndsWith("DataBus"))
                .DefiningExpressMessagesAs(t => t.Name.EndsWith("Express"))
                .DefiningTimeToBeReceivedAs(t => t.Name.EndsWith("Expires")
                    ? TimeSpan.FromSeconds(30) : TimeSpan.MaxValue);
            // Use existing Castle Windsor container
            configuration.UseContainer<WindsorBuilder>(c => c.ExistingContainer(container));
            // Use JSON for serialisation
            configuration.UseSerialization<JsonSerializer>();
            // Use MSMQ for transport
            configuration.UseTransport<MsmqTransport>();
            // Use InMemory persistence only
            configuration.UsePersistence<InMemoryPersistence>();
            configuration.EnableInstallers();

            // Start the bus
            var bus = Bus.Create(configuration);
            bus.Start();
        }
 private static void ConfigureAssembliesToScan(BusConfiguration busConfiguration)
 {
     busConfiguration.AssembliesToScan(
         AllAssemblies.Matching("NServiceBus")
             .And("Messages")
             .And("DocumentDownloader"));
 }
Пример #12
0
        public void SetUp()
        {
            Builder = new FuncBuilder();
            InMemoryFaultManager = new Faults.InMemory.FaultManager();
            FakeReceiver         = new FakeReceiver();

            var configurationBuilder = new BusConfiguration();

            configurationBuilder.EndpointName("xyz");
            configurationBuilder.AssembliesToScan(new Assembly[0]);

            Transport = new TransportReceiver(new TransactionSettings(true, TimeSpan.FromSeconds(30), IsolationLevel.ReadCommitted, 5, false, false), 1, 0, FakeReceiver, InMemoryFaultManager, new SettingsHolder(), configurationBuilder.BuildConfiguration());

            RegisterTypes();
            Builder.Register <IManageMessageFailures>(() => InMemoryFaultManager);
            Builder.Register <TransportReceiver>(() => Transport);

            //var configurer = new SatelliteConfigurer();
            //configurer.Customize(configure);

            var launcher = new SatelliteLauncher(Builder);

            BeforeRun();
            launcher.Start();
        }
Пример #13
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;
        }
Пример #14
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))
                    {
                    }
        }
        public void SetUp()
        {
            Builder = new FuncBuilder();
            InMemoryFaultManager = new NServiceBus.Faults.InMemory.FaultManager();
            FakeReceiver = new FakeReceiver();

            var configurationBuilder = new BusConfiguration();

            configurationBuilder.EndpointName("xyz");
            configurationBuilder.AssembliesToScan(new Assembly[0]);

            Transport = new TransportReceiver(new TransactionSettings(true, TimeSpan.FromSeconds(30), IsolationLevel.ReadCommitted, 5, false, false), 1, 0, FakeReceiver, InMemoryFaultManager, new SettingsHolder(), configurationBuilder.BuildConfiguration());

            RegisterTypes();
            Builder.Register<IManageMessageFailures>(() => InMemoryFaultManager);
            Builder.Register<TransportReceiver>(() => Transport);

            //var configurer = new SatelliteConfigurer();
            //configurer.Customize(configure);

            var launcher = new SatelliteLauncher(Builder);

            BeforeRun();
            launcher.Start();
        }
 private static void ConfigureAssembliesToScan(BusConfiguration busConfiguration)
 {
     busConfiguration.AssembliesToScan(
         AllAssemblies.Matching("NServiceBus")
             .And("Messages")
             .And("Audit"));
 }
Пример #17
0
        public void Should_always_include_the_core_nservicebus_types()
        {
             var builder = new BusConfiguration();

            builder.AssembliesToScan(Assembly.GetExecutingAssembly());

            Assert.True(builder.BuildConfiguration().Settings.GetAvailableTypes().Any(a => a.Assembly.GetName().Name.Equals("NServiceBus.Core")));
        }
Пример #18
0
        public void Should_always_include_the_core_nservicebus_types()
        {
            var builder = new BusConfiguration();

            builder.AssembliesToScan(Assembly.GetExecutingAssembly());

            Assert.True(builder.BuildConfiguration().Settings.GetAvailableTypes().Any(a => a.Assembly.GetName().Name.Equals("NServiceBus.Core")));
        }
 public void Customize(BusConfiguration configuration)
 {
     configuration.AssembliesToScan(Assembly.GetExecutingAssembly(), typeof(AxisMessage).Assembly, typeof(ReportStoreMessage).Assembly, typeof(AzureStorageQueueTransport).Assembly);
     configuration.UseTransport<AzureStorageQueueTransport>();
     configuration.UsePersistence<InMemoryPersistence>();
     configuration.EndpointName("50000");
     configuration.Transactions().DoNotWrapHandlersExecutionInATransactionScope();
     configuration.Transactions().Disable();
 }
Пример #20
0
        private static IBus CreateNServiceBus()
        {
            var configuration = new BusConfiguration();

            configuration.UsePersistence <InMemoryPersistence>();
            // limits the search for handlers to this specific assembly, otherwiese it will traverse all referenced assemblies looking for handlers.
            configuration.AssembliesToScan(Assembly.Load("NServiceBusReceiver"));
            return(NServiceBus.Bus.Create(configuration));
        }
        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));
        }
Пример #22
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
        }
        public void Start()
        {
            DynamicHostControllerConfig configSection = null;

            var o = new BusConfiguration();
            o.AssembliesToScan(GetType().Assembly);
            o.AzureConfigurationSource();
            o.RegisterComponents(Configurer =>
            {
                Configurer.ConfigureComponent<DynamicEndpointLoader>(DependencyLifecycle.SingleInstance);
                Configurer.ConfigureComponent<DynamicEndpointProvisioner>(DependencyLifecycle.SingleInstance);
                Configurer.ConfigureComponent<DynamicEndpointRunner>(DependencyLifecycle.SingleInstance);
                Configurer.ConfigureComponent<DynamicHostMonitor>(DependencyLifecycle.SingleInstance);

                configSection = o.GetSettings().GetConfigSection<DynamicHostControllerConfig>() ?? new DynamicHostControllerConfig();

                Configurer.ConfigureProperty<DynamicEndpointLoader>(t => t.ConnectionString, configSection.ConnectionString);
                Configurer.ConfigureProperty<DynamicEndpointLoader>(t => t.Container, configSection.Container);
                Configurer.ConfigureProperty<DynamicEndpointProvisioner>(t => t.LocalResource, configSection.LocalResource);
                Configurer.ConfigureProperty<DynamicEndpointProvisioner>(t => t.RecycleRoleOnError, configSection.RecycleRoleOnError);
                Configurer.ConfigureProperty<DynamicEndpointRunner>(t => t.RecycleRoleOnError, configSection.RecycleRoleOnError);
                Configurer.ConfigureProperty<DynamicEndpointRunner>(t => t.TimeToWaitUntilProcessIsKilled, configSection.TimeToWaitUntilProcessIsKilled);
                Configurer.ConfigureProperty<DynamicHostMonitor>(t => t.Interval, configSection.UpdateInterval);
            });

            o.UsePersistence<AzureStoragePersistence>();
            o.DiscardFailedMessagesInsteadOfSendingToErrorQueue();

            profileManager.ActivateProfileHandlers(o);
            specifier.Customize(o);

            var bus = (UnicastBus)Bus.CreateSendOnly(o);

            loader = bus.Builder.Build<DynamicEndpointLoader>();
            provisioner = bus.Builder.Build<DynamicEndpointProvisioner>();
            runner = bus.Builder.Build<DynamicEndpointRunner>();

            var endpointsToHost = loader.LoadEndpoints();
            if (endpointsToHost == null) return;

            runningServices = new List<EndpointToHost>(endpointsToHost);

            provisioner.Provision(runningServices);

            runner.Start(runningServices);

            if (!configSection.AutoUpdate) return;

            monitor = bus.Builder.Build<DynamicHostMonitor>();
            monitor.UpdatedEndpoints += UpdatedEndpoints;
            monitor.NewEndpoints += NewEndpoints;
            monitor.RemovedEndpoints += RemovedEndpoints;
            monitor.Monitor(runningServices);
            monitor.Start();
        }
        void ScanningExcludeByName(BusConfiguration busConfiguration)
        {
            #region ScanningExcludeByName

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

            #endregion
        }
        void ScanningExcludeByName(BusConfiguration busConfiguration)
        {
            #region ScanningExcludeByName

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

            #endregion
        }
Пример #26
0
    static IBus StartInstance2()
    {
        var busConfiguration = new BusConfiguration();

        busConfiguration.EndpointName("Samples.MultiHosting.Instance2");
        busConfiguration.AssembliesToScan(AllAssemblies.Matching("Instance2.").And("Shared"));
        busConfiguration.EnableInstallers();
        busConfiguration.UsePersistence <InMemoryPersistence>();

        return(Bus.Create(busConfiguration).Start());
    }
Пример #27
0
        public void Customize(BusConfiguration configuration)
        {
            configuration.DisableFeature<TimeoutManager>();
            configuration.AssembliesToScan(typeof(NHibernatePersistence).Assembly, typeof(OrderSaga).Assembly, typeof(OrderPlaced).Assembly);
            //configuration.UsePersistence<InMemoryPersistence>();

            configuration.UsePersistence<NHibernatePersistence>();
            configuration.UseSerialization<JsonSerializer>();

            //configuration.DisableFeature<NHibernateTimeoutStorage>();
        }
Пример #28
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 ScanningMixingIncludeAndExclude(BusConfiguration busConfiguration)
        {
            #region ScanningMixingIncludeAndExclude

            var excludesBuilder = AllAssemblies
                                  .Matching("NServiceBus")
                                  .And("MyCompany.")
                                  .Except("BadAssembly.dll");
            busConfiguration.AssembliesToScan(excludesBuilder);

            #endregion
        }
        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
        }
        void ScanningIncludeByPattern(BusConfiguration busConfiguration)
        {
            #region ScanningIncludeByPattern

            var includesBuilder = AllAssemblies
                                  .Matching("NServiceBus")
                                  .And("MyCompany.")
                                  .And("SomethingElse");
            busConfiguration.AssembliesToScan(includesBuilder);

            #endregion
        }
Пример #32
0
    static IBus StartInstance2()
    {
        BusConfiguration busConfig = new BusConfiguration();

        busConfig.EndpointName("Samples.MultiHosting-2");
        busConfig.AssembliesToScan(AllAssemblies.Matching("Instance2."));
        busConfig.UseSerialization <XmlSerializer>();
        busConfig.EnableInstallers();
        busConfig.UsePersistence <InMemoryPersistence>();

        return(Bus.Create(busConfig).Start());
    }
        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
        }
Пример #34
0
    static IBus StartInstance2()
    {
        BusConfiguration busConfiguration = new BusConfiguration();

        busConfiguration.EndpointName("Samples.MultiHosting.Instance2");
        busConfiguration.AssembliesToScan(AllAssemblies.Matching("Instance2.").And("Shared"));
        busConfiguration.UseSerialization<JsonSerializer>();
        busConfiguration.EnableInstallers();
        busConfiguration.UsePersistence<InMemoryPersistence>();

        return Bus.Create(busConfiguration).Start();
    }
        void ScanningIncludeByPattern(BusConfiguration busConfiguration)
        {
            #region ScanningIncludeByPattern

            var includesBuilder = AllAssemblies
                .Matching("NServiceBus")
                .And("MyCompany.")
                .And("SomethingElse");
            busConfiguration.AssembliesToScan(includesBuilder);

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

            #region ScanningExcludeByName

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

            #endregion
        }
        void ScanningMixingIncludeAndExclude(BusConfiguration busConfiguration)
        {
            #region ScanningMixingIncludeAndExclude

            var excludesBuilder = AllAssemblies
                .Matching("NServiceBus")
                .And("MyCompany.")
                .Except("BadAssembly.dll");
            busConfiguration.AssembliesToScan(excludesBuilder);

            #endregion

        }
        void ScanningUpgrade(BusConfiguration busConfiguration)
        {
            #region 5to6ScanningUpgrade

            IExcludesBuilder excludesBuilder =
                AllAssemblies.Matching("NServiceBus")
                .And("MyCompany.")
                .Except("BadAssembly1.dll")
                .And("BadAssembly2.dll");
            busConfiguration.AssembliesToScan(excludesBuilder);

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

            #region ScanningExcludeByName

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

            #endregion
        }
Пример #40
0
        public BusConfiguration GetConfiguration(RunDescriptor runDescriptor, EndpointConfiguration endpointConfiguration, IConfigurationSource configSource, Action <BusConfiguration> configurationBuilderCustomization)
        {
            var settings = runDescriptor.Settings;

            LogManager.Use <CommonLoggingFactory>();

            var config = new BusConfiguration();

            Container container = new Container(c => c.AddRegistry <T>());

            config.UseContainer <StructureMapBuilder>(c => c.ExistingContainer(container));

            config.EndpointName(endpointConfiguration.EndpointName);
            config.AssembliesToScan(Enumerable.Repeat(typeof(T).Assembly, 1)
                                    .Concat(Enumerable.Repeat(this.GetType().Assembly, 1))
                                    .Concat(endpointConfiguration.TypesToInclude.Select(o => o.Assembly))
                                    .Distinct());
            config.CustomConfigurationSource(configSource);
            config.UsePersistence <InMemoryPersistence>();
            config.EnableFeature <MsmqSubscriptionPersistence>();
            config.PurgeOnStartup(true);
            config.DiscardFailedMessagesInsteadOfSendingToErrorQueue();
            config.UseSerialization <JsonSerializer>();
            config.UseTransport <MsmqTransport>();
            config.DisableFeature <TimeoutManager>(); //if not disabled there is null reference exception
            config.EnableInstallers();
            config.EnableFeature <AutoSubscribe>();

            // Plug-in a behavior that listens for subscription messages
            config.Pipeline.Register <SubscriptionForIncomingBehavior.Registration>();
            config.Pipeline.Register <OutgoingSubscription.Registration>();
            config.RegisterComponents(c => c.ConfigureComponent <OutgoingSubscription>(DependencyLifecycle.InstancePerCall));
            config.RegisterComponents(c => c.ConfigureComponent <SubscriptionForIncomingBehavior>(DependencyLifecycle.InstancePerCall));

            // Important: you need to make sure that the correct ScenarioContext class is available to your endpoints and tests
            config.RegisterComponents(r => {
                r.RegisterSingleton(runDescriptor.ScenarioContext.GetType(), runDescriptor.ScenarioContext);
                r.RegisterSingleton(typeof(ScenarioContext), runDescriptor.ScenarioContext);
            });

            config.Conventions()
            .DefiningCommandsAs(t => t.Namespace != null && t.Namespace.StartsWith("EzBobApi.Commands"));

            // Call extra custom action if provided
            if (configurationBuilderCustomization != null)
            {
                configurationBuilderCustomization(config);
            }

            return(config);
        }
        public IBus CreateBusWithInMemoryPersistence()
        {
            var configuration = new BusConfiguration();

            configuration.UseTransport<RabbitMQTransport>();
            configuration.UsePersistence<InMemoryPersistence>();
            configuration.DisableFeature<TimeoutManager>();
            configuration.EndpointName(_endpointName);
            configuration.AssembliesToScan(_assembliesToScan);
            configuration.Conventions()
                .DefiningCommandsAs(
                    c => c.Namespace != null && c.Namespace.EndsWith(_namespace));
            var bus = Bus.Create(configuration);
            return bus;
        }
        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));
            }));
        }
Пример #43
0
    static IBus StartInstance1()
    {
        #region multi-hosting-assembly-scan

        BusConfiguration busConfiguration = new BusConfiguration();

        busConfiguration.EndpointName("Samples.MultiHosting.Instance1");
        busConfiguration.AssembliesToScan(AllAssemblies.Matching("Instance1.").And("Shared"));
        busConfiguration.UseSerialization <JsonSerializer>();
        busConfiguration.EnableInstallers();
        busConfiguration.UsePersistence <InMemoryPersistence>();

        return(Bus.Create(busConfiguration).Start());

        #endregion
    }
Пример #44
0
    static IBus StartInstance1()
    {
        #region multi-hosting-assembly-scan

        var busConfiguration = new BusConfiguration();

        busConfiguration.EndpointName("Samples.MultiHosting.Instance1");
        // only include Instance1.dll and dependent assemblies
        busConfiguration.AssembliesToScan(AllAssemblies.Matching("Instance1.").And("Shared"));
        busConfiguration.EnableInstallers();
        busConfiguration.UsePersistence <InMemoryPersistence>();

        return(Bus.Create(busConfiguration).Start());

        #endregion
    }
        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);
            }));
        }
Пример #46
0
    static IBus StartInstance1()
    {
        #region multi-hosting-assembly-scan

        BusConfiguration busConfiguration = new BusConfiguration();

        busConfiguration.EndpointName("Samples.MultiHosting.Instance1");
        //only include Instance1.dll and dependent assemblies
        busConfiguration.AssembliesToScan(AllAssemblies.Matching("Instance1.").And("Shared"));
        busConfiguration.UseSerialization<JsonSerializer>();
        busConfiguration.EnableInstallers();
        busConfiguration.UsePersistence<InMemoryPersistence>();

        return Bus.Create(busConfiguration).Start();

        #endregion
    }
Пример #47
0
        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);
        }
Пример #48
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();
        }
Пример #49
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());
        }
Пример #50
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());
        }
        public void Start()
        {
            var assemblies = AllAssemblies.Except("IKVM.OpenJDK.Core.dll");
            var config = new BusConfiguration();
            config.UsePersistence<InMemoryPersistence>();
            config.Conventions().DefiningMessagesAs(x => (x.Namespace != null && x.Namespace.Contains("Contracts")));
            config.EndpointName(ConfigurationManager.AppSettings["EndpointName"]);
            config.EnableDurableMessages();
            config.UseSerialization<XmlSerializer>();
            config.UseTransport<RabbitMQTransport>().DisableCallbackReceiver();
            config.UseContainer<StructureMapBuilder>(c => c.ExistingContainer(StructureMapBuilderConfig.GetStructureMapContainer()));
            config.DisableFeature<SecondLevelRetries>();
            config.DisableFeature<StorageDrivenPublishing>();
            config.DisableFeature<TimeoutManager>();
            config.AssembliesToScan(assemblies);
            var buz = Bus.CreateSendOnly(config);

            var uri = ConfigurationManager.AppSettings["Uri"];
            WebApp.Start<Startup>(uri);
        }
Пример #52
0
    public void Simple()
    {
        // Autofac
        var listOfAssemblies = new List<Assembly>();
        var listOfTypes = new List<Type>();
        string directoryToProbe = null;

        #region TypeScanningV4

        var configuration = new BusConfiguration();

        configuration.AssembliesToScan(listOfAssemblies);

        // or
        configuration.TypesToScan(listOfTypes);

        //or
        configuration.ScanAssembliesInDirectory(directoryToProbe);

        #endregion
    }
        public void Customize(BusConfiguration configuration)
        {
            // NServiceBus provides the following durable storage options
            // To use RavenDB, install-package NServiceBus.RavenDB and then use configuration.UsePersistence<RavenDBPersistence>();
            // To use SQLServer, install-package NServiceBus.NHibernate and then use configuration.UsePersistence<NHibernatePersistence>();

            // If you don't need a durable storage you can also use, configuration.UsePersistence<InMemoryPersistence>();
            // more details on persistence can be found here: http://docs.particular.net/nservicebus/persistence-in-nservicebus

            //Also note that you can mix and match storages to fit you specific needs.
            //http://docs.particular.net/nservicebus/persistence-order

            // For this example we are using InMemoryPersistence only.
            configuration.UsePersistence<InMemoryPersistence>();

            // Log using NLog
            NServiceBus.Logging.LogManager.Use<NLogFactory>();

            // Specify the assemblies to be loaded, rather than scanning all assemblies in the application folder.
            configuration.AssembliesToScan(MessageAssemblies
                .Union(HandlerAssemblies));
            // Use NServiceBus Unobtrusive Mode so that our Messages are just POCOs
            configuration.Conventions()
                .DefiningCommandsAs(t => t.Namespace != null && t.Namespace.EndsWith("Commands"))
                .DefiningEventsAs(t => t.Namespace != null && t.Namespace.EndsWith("Events"))
                .DefiningMessagesAs(t => t.Namespace != null && t.Namespace == "Messages")
                .DefiningDataBusPropertiesAs(p => p.Name.EndsWith("DataBus"))
                .DefiningExpressMessagesAs(t => t.Name.EndsWith("Express"))
                .DefiningTimeToBeReceivedAs(t => t.Name.EndsWith("Expires")
                    ? TimeSpan.FromSeconds(30) : TimeSpan.MaxValue);
            // Use the existing Castle Windsor container
            configuration.UseContainer<WindsorBuilder>(c => c.ExistingContainer(Container.Instance));
            // Use JSON serialisation
            configuration.UseSerialization<JsonSerializer>();
            // Use MSMQ for transport
            configuration.UseTransport<MsmqTransport>();
            // Don't purge existing messages on service startup
            configuration.PurgeOnStartup(false);
        }
 //[Fact]
 //public void TestMethod1()
 //{
 //    //var testMessage = ServiceBus.MakeMessage<TestMessage>();
 //    //testMessage.Name = "Test";
 //    //ServiceBus.SendTo(testMessage);
 //}
 public static IStartableBus DefaultBusCreator(params Assembly[] assemblies)
 {
     #if !CLR4
     return Configure.With(new[] { typeof(CompletionMessage).Assembly }.Union(assemblies))
         .DefaultBuilder()
         .XmlSerializer()
         .FakeTransport()
         .UnicastBus()
         .CreateBus();
     #elif !CLR45
     return Configure.With(assemblies)
         .DefaultBuilder()
         .FakeTransport()
         .UnicastBus()
         .CreateBus();
     #else
     var configuration = new BusConfiguration();
     configuration.AssembliesToScan(assemblies);
     //configuration.DefaultBuilder();
     //configuration.UseTransport<FakeTransport>()
     return NServiceBusBus.Create(configuration);
     #endif
 }
        void ScanningUpgrade(BusConfiguration busConfiguration)
        {
            #region 5to6ScanningUpgrade

            IExcludesBuilder excludesBuilder =
                AllAssemblies.Matching("NServiceBus")
                    .And("MyCompany.")
                    .Except("BadAssembly1.dll")
                    .And("BadAssembly2.dll");
            busConfiguration.AssembliesToScan(excludesBuilder);

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

            #region 5to6ScanningUpgrade

            busConfiguration.AssembliesToScan(AllAssemblies.Matching("NServiceBus").And("MyCompany.").Except("BadAssembly1.dll").And("BadAssembly2.dll"));

            #endregion
        }
Пример #57
0
        void PerformConfiguration(Action<BusConfiguration> moreConfiguration = null)
        {
            var loggingConfigurers = profileManager.GetLoggingConfigurer();
            foreach (var loggingConfigurer in loggingConfigurers)
            {
                loggingConfigurer.Configure(specifier);
            }

            var configuration = new BusConfiguration();

            configuration.EndpointName(endpointNameToUse);
            configuration.AssembliesToScan(assembliesToScan);
           
            if (SafeRoleEnvironment.IsAvailable)
            {
                if (!IsHostedIn.ChildHostProcess())
                {
                    configuration.AzureConfigurationSource();
                }

                var host = SafeRoleEnvironment.CurrentRoleName;
                var instance = SafeRoleEnvironment.CurrentRoleInstanceId;
                var hostId = DeterministicGuid(instance, host);
                configuration
                    .UniquelyIdentifyRunningInstance()
                    .UsingCustomIdentifier(hostId)
                    .UsingNames(instance, host);
            }

            if (moreConfiguration != null)
                {
                    moreConfiguration(configuration);
                }

            specifier.Customize(configuration);
            RoleManager.TweakConfigurationBuilder(specifier, configuration);
            bus = (UnicastBus) Bus.Create(configuration);
        }
Пример #58
0
 public void Customize(BusConfiguration configuration)
 {
     configuration.AssembliesToScan(typeof(NHibernatePersistence).Assembly, typeof(PlaceOrderHandler).Assembly, typeof(OrderPlaced).Assembly);
     configuration.UsePersistence<NHibernatePersistence>();
     configuration.UseSerialization<JsonSerializer>();
 }
Пример #59
0
        void PerformConfiguration(Action<BusConfiguration> moreConfiguration = null)
        {
            var loggingConfigurers = profileManager.GetLoggingConfigurer();
            foreach (var loggingConfigurer in loggingConfigurers)
            {
                loggingConfigurer.Configure(specifier);
            }

            var configuration = new BusConfiguration();

            configuration.EndpointName(endpointNameToUse);
            configuration.EndpointVersion(endpointVersionToUse);
            configuration.AssembliesToScan(assembliesToScan);
            configuration.DefineCriticalErrorAction(OnCriticalError);

            if (moreConfiguration != null)
            {
                moreConfiguration(configuration);
            }

            specifier.Customize(configuration);
            RoleManager.TweakConfigurationBuilder(specifier, configuration);
            profileManager.ActivateProfileHandlers(configuration);

            bus = (UnicastBus) Bus.Create(configuration);
        }
        public void ScanningListOfAssemblies()
        {
            IEnumerable<Assembly> myListOfAssemblies = null;

            Assembly assembly2 = null;
            Assembly assembly1 = null;
            BusConfiguration busConfiguration = new BusConfiguration();

            #region ScanningListOfAssemblies

            busConfiguration.AssembliesToScan(myListOfAssemblies);
            // or
            busConfiguration.AssembliesToScan(assembly1, assembly2);

            #endregion
        }