Example #1
0
        Usage(Configure configure)
        {
            #region EndpointNameCode

            // To customize the endpoint name via code using the DefineEndpointName method,
            // it is important to call it first, right after the With() configuration entry point.
            configure.DefineEndpointName("MyEndpoint");

            #endregion
        }
 public void ConfigureBus(Configure config, string endpointName, IWindsorContainer container)
 {
     config.DefineEndpointName(endpointName);
     config.CastleWindsorBuilder(container);
     //config.UseNHibernateTimeoutPersister();
     config.UseNHibernateSubscriptionPersister();
     config.DisableTimeoutManager();
     config.DefiningCommandsAs(t => t.GetInterfaces().Contains(typeof(Contracts.ICommand)));
     config.DefiningEventsAs(t => t.GetInterfaces().Contains(typeof(Contracts.IEvent)));
     config.SetEndpointSLA(TimeSpan.FromSeconds(600));
     config.UnicastBus();
 }
		protected virtual void ConfigureNServiceBus(Configure configuration, IWindsorContainer container)
		{
			Func<string> connectionStringFactory = GetConnectionStringFactory("NServiceBus.Persistence");

			configuration
				.DefineEndpointName("Ddd.Template.Domain")
				.CastleWindsorBuilder(container)
				.JsonSerializer()
				.MsmqTransport()
				.IsTransactional(true)
				.PurgeOnStartup(false)
				.RavenPersistence(connectionStringFactory, "Ddd.Template.NServiceBus.domain")
				.RunTimeoutManager()
				.UseRavenTimeoutPersister()
				.RavenSubscriptionStorage()
				.UnicastBus()
				.CreateBus()
				.Start();
		}
		private void ConfigureNServiceBus(Configure configuration, IWindsorContainer container)
		{
			Func<string> connectionStringFactory = GetConnectionStringFactory("NServiceBus.Persistence");
			var nServiceBusDbName = ConfigurationManager.AppSettings["NServiceBus.Persistence.RavenDbName"];

			configuration
				.DefineEndpointName("Ddd.Template.Denormalizer")
				.CastleWindsorBuilder(container)
				.RavenPersistence(connectionStringFactory, nServiceBusDbName)
				.RunTimeoutManager()
					.UseRavenTimeoutPersister()
				.JsonSerializer()
				.MsmqTransport()
					.IsTransactional(true)
					.PurgeOnStartup(false)
				.UnicastBus()
				.CreateBus()
				.Start();
		}
Example #5
0
    static void Main()
    {
        Configure.Serialization.Json();
        #region ContainerConfiguration
        Configure configure = Configure.With();
        configure.Log4Net();
        configure.DefineEndpointName("Samples.StructureMap");
        Container container = new Container(x => x.For <MyService>().Use(new MyService()));
        configure.StructureMapBuilder(container);
        #endregion
        configure.InMemorySagaPersister();
        configure.UseInMemoryTimeoutPersister();
        configure.InMemorySubscriptionStorage();
        configure.UseTransport <Msmq>();
        IBus bus = configure.UnicastBus()
                   .CreateBus()
                   .Start(() => Configure.Instance.ForInstallationOn <Windows>().Install());

        bus.SendLocal(new MyMessage());

        Console.WriteLine("\r\nPress any key to stop program\r\n");
        Console.ReadKey();
    }
Example #6
0
    static void Main()
    {
        Configure configure = Configure.With();

        configure.DefineEndpointName("Samples.Unobtrusive.Client");
        configure.Log4Net();
        configure.DefaultBuilder();
        configure.ApplyCustomConventions();
        configure.MsmqTransport();
        configure.InMemorySagaPersister();
        configure.UseInMemoryTimeoutPersister();
        configure.RunTimeoutManagerWithInMemoryPersistence();
        configure.InMemorySubscriptionStorage();
        configure.JsonSerializer();
        configure.RijndaelEncryptionService();

        using (IStartableBus startableBus = configure.UnicastBus().CreateBus())
        {
            IBus bus = startableBus
                       .Start(() => configure.ForInstallationOn <Windows>().Install());
            CommandSender.Start(bus);
        }
    }
Example #7
0
    static void Main()
    {
        Configure.Serialization.Json();
        #region ConfigureLogging
        Configure configure = Configure.With();
        //Configures a ConsoleAppender with a threshold of Debug
        configure.Log4Net();
        configure.DefineEndpointName("Samples.Logging.Default");
        #endregion
        configure.DefaultBuilder();
        configure.InMemorySagaPersister();
        configure.UseInMemoryTimeoutPersister();
        configure.InMemorySubscriptionStorage();
        configure.UseTransport<Msmq>();
        using (IStartableBus startableBus = configure.UnicastBus().CreateBus())
        {
            IBus bus = startableBus.Start(() => configure.ForInstallationOn<Windows>().Install());
            bus.SendLocal(new MyMessage());

            Console.WriteLine("Press any key to exit");
            Console.ReadKey();
        }
    }
Example #8
0
 static void Main()
 {
     Console.Title = "Samples.MessageDurability.Sender";
     Configure.Serialization.Json();
     #region non-transactional
     Configure.Transactions.Disable();
     #endregion
     Configure configure = Configure.With();
     configure.Log4Net();
     configure.DefineEndpointName("Samples.MessageDurability.Sender");
     configure.DefaultBuilder();
     configure.InMemorySagaPersister();
     configure.UseInMemoryTimeoutPersister();
     configure.InMemorySubscriptionStorage();
     configure.UseTransport <Msmq>();
     using (IStartableBus startableBus = configure.UnicastBus().CreateBus())
     {
         IBus bus = startableBus.Start(() => configure.ForInstallationOn <Windows>().Install());
         bus.Send("Samples.MessageDurability.Receiver", new MyMessage());
         Console.WriteLine("Press any key to exit");
         Console.ReadKey();
     }
 }
Example #9
0
    static void Main()
    {
        #region ContainerConfiguration
        Configure configure = Configure.With();
        configure.Log4Net();
        configure.DefineEndpointName("Samples.StructureMap");
        Container container = new Container(x => x.For <MyService>().Use(new MyService()));
        configure.StructureMapBuilder(container);
        #endregion
        configure.MsmqTransport();
        configure.InMemorySagaPersister();
        configure.RunTimeoutManagerWithInMemoryPersistence();
        configure.InMemorySubscriptionStorage();
        configure.JsonSerializer();
        using (IStartableBus startableBus = configure.UnicastBus().CreateBus())
        {
            IBus bus = startableBus.Start(() => configure.ForInstallationOn <Windows>().Install());
            bus.SendLocal(new MyMessage());

            Console.WriteLine("Press any key to exit");
            Console.ReadKey();
        }
    }
Example #10
0
    static void Main()
    {
        Configure.Serialization.Json();

        #region server
        Configure configure = Configure.With();
        configure.Log4Net();
        configure.DefineEndpointName("Samples.Scaleout.Server");
        configure.DefaultBuilder();
        configure.RunMSMQDistributor(withWorker: false);
        #endregion
        configure.InMemorySagaPersister();
        configure.UseInMemoryTimeoutPersister();
        configure.InMemorySubscriptionStorage();
        configure.UseTransport <Msmq>();
        using (IStartableBus startableBus = configure.UnicastBus().CreateBus())
        {
            startableBus.Start(() => configure.ForInstallationOn <Windows>().Install());

            Console.WriteLine("Press any key to exit");
            Console.ReadKey();
        }
    }
Example #11
0
    static void Main()
    {
        Configure.Serialization.Json();
        Configure configure = Configure.With();

        configure.Log4Net();
        configure.DefineEndpointName("Samples.MessageMutators");
        configure.DefaultBuilder();
        configure.InMemorySagaPersister();
        configure.UseInMemoryTimeoutPersister();
        configure.InMemorySubscriptionStorage();
        configure.UseTransport <Msmq>();
        #region ComponentRegistartion
        configure.Configurer.ConfigureComponent <ValidationMessageMutator>(DependencyLifecycle.InstancePerCall);
        configure.Configurer.ConfigureComponent <TransportMessageCompressionMutator>(DependencyLifecycle.InstancePerCall);
        #endregion

        using (IStartableBus startableBus = configure.UnicastBus().CreateBus())
        {
            IBus bus = startableBus.Start(() => configure.ForInstallationOn <Windows>().Install());
            Runner.Run(bus);
        }
    }
Example #12
0
    static void Main()
    {
        Configure.Serialization.Json();
        Configure configure = Configure.With();

        configure.Log4Net();
        configure.DefineEndpointName("Sample.PipelineStream.Sender");
        configure.DefaultBuilder();
        configure.InMemorySagaPersister();
        configure.UseInMemoryTimeoutPersister();
        configure.InMemorySubscriptionStorage();
        configure.UseTransport <Msmq>();
        #region configure-stream-storage
        configure.SetStreamStorageLocation("..\\..\\..\\storage");
        #endregion

        using (IStartableBus startableBus = configure.UnicastBus().CreateBus())
        {
            var bus = startableBus.Start(() => configure.ForInstallationOn <Windows>().Install());

            Run(bus);
        }
    }
Example #13
0
    static void Main()
    {
        Console.Title = "Samples.FaultTolerance.Server";
        Configure configure = Configure.With();

        configure.Log4Net();
        configure.DefineEndpointName("Samples.FaultTolerance.Server");
        configure.DefaultBuilder();
        // To disable second level retries(SLR), uncomment the following line. SLR is enabled by default.
//configure.DisableSecondLevelRetries();
        configure.MsmqTransport();
        configure.InMemorySagaPersister();
        configure.RunTimeoutManagerWithInMemoryPersistence();
        configure.InMemorySubscriptionStorage();
        configure.JsonSerializer();
        using (IStartableBus startableBus = configure.UnicastBus().CreateBus())
        {
            IBus bus = startableBus
                       .Start(() => configure.ForInstallationOn <Windows>().Install());
            Console.WriteLine("Press any key to exit");
            Console.ReadKey();
        }
    }
Example #14
0
    static void Main()
    {
        Configure.Serialization.Json();
        Configure configure = Configure.With();

        #region ConfigureAppender
        configure.Log4Net <MyConsoleAppender>(appender => { appender.Color = ConsoleColor.Green; });
        #endregion
        configure.DefineEndpointName("Samples.Log4Net.Appender");
        configure.DefaultBuilder();
        configure.InMemorySagaPersister();
        configure.UseInMemoryTimeoutPersister();
        configure.InMemorySubscriptionStorage();
        configure.UseTransport <Msmq>();
        using (IStartableBus startableBus = configure.UnicastBus().CreateBus())
        {
            IBus bus = startableBus.Start(() => configure.ForInstallationOn <Windows>().Install());
            bus.SendLocal(new MyMessage());

            Console.WriteLine("\r\nPress any key to stop program\r\n");
            Console.ReadKey();
        }
    }
Example #15
0
    static void Main()
    {
        Console.Title = "Samples.RabbitMQ.Simple";
        Configure.Serialization.Json();
        #region ConfigureRabbit
        Configure configure = Configure.With();
        configure.Log4Net();
        configure.DefineEndpointName("Samples.RabbitMQ.Simple");
        configure.DefaultBuilder();
        configure.UseTransport <NServiceBus.RabbitMQ>(() => "host=localhost");
        #endregion
        configure.InMemorySagaPersister();
        configure.UseInMemoryTimeoutPersister();
        configure.InMemorySubscriptionStorage();
        using (IStartableBus startableBus = configure.UnicastBus().CreateBus())
        {
            IBus bus = startableBus.Start(() => configure.ForInstallationOn <Windows>().Install());
            bus.SendLocal(new MyMessage());

            Console.WriteLine("Press any key to exit");
            Console.ReadKey();
        }
    }
Example #16
0
    static void Main()
    {
        Configure configure = Configure.With();

        configure.Log4Net();
        configure.DefineEndpointName("Samples.FaultTolerance.Client");
        configure.DefaultBuilder();
        configure.MsmqTransport();
        configure.InMemorySagaPersister();
        configure.RunTimeoutManagerWithInMemoryPersistence();
        configure.InMemorySubscriptionStorage();
        configure.JsonSerializer();
        using (IStartableBus startableBus = configure.UnicastBus().CreateBus())
        {
            IBus bus = startableBus
                       .Start(() => configure.ForInstallationOn <Windows>().Install());
            Console.WriteLine("Press enter to send a message");
            Console.WriteLine("Press any key to exit");

            while (true)
            {
                ConsoleKeyInfo key = Console.ReadKey();
                if (key.Key != ConsoleKey.Enter)
                {
                    return;
                }
                Guid id = Guid.NewGuid();

                bus.Send("Samples.FaultTolerance.Server", new MyMessage
                {
                    Id = id
                });

                Console.WriteLine("Sent a new message with id: {0}", id.ToString("N"));
            }
        }
    }
Example #17
0
    static void Main()
    {
        Console.Title = "Samples.ErrorHandling.WithoutSLR";
        #region DisableSLR
        Configure configure = Configure.With();
        configure.Log4Net();
        configure.DefineEndpointName("Samples.ErrorHandling.WithoutSLR");
        configure.DefaultBuilder();
        configure.DisableSecondLevelRetries();
        #endregion
        configure.MsmqTransport();
        configure.InMemorySagaPersister();
        configure.RunTimeoutManagerWithInMemoryPersistence();
        configure.InMemorySubscriptionStorage();
        configure.JsonSerializer();
        using (IStartableBus startableBus = configure.UnicastBus().CreateBus())
        {
            IBus bus = startableBus
                       .Start(() => configure.ForInstallationOn <Windows>().Install());
            Console.WriteLine("Press enter to send a message that will throw an exception.");
            Console.WriteLine("Press any key to exit");

            while (true)
            {
                ConsoleKeyInfo key = Console.ReadKey();
                if (key.Key != ConsoleKey.Enter)
                {
                    return;
                }
                MyMessage m = new MyMessage
                {
                    Id = Guid.NewGuid()
                };
                bus.SendLocal(m);
            }
        }
    }
Example #18
0
    static void Main()
    {
        Configure configure = Configure.With();

        configure.Log4Net();
        configure.DefineEndpointName("Samples.Versioning.V2Publisher");
        configure.DefaultBuilder();
        configure.JsonSerializer();
        configure.MsmqTransport();
        configure.InMemorySagaPersister();
        configure.UseInMemoryTimeoutPersister();
        configure.InMemorySubscriptionStorage();
        using (IStartableBus startableBus = configure.UnicastBus().CreateBus())
        {
            IBus bus = startableBus.Start(() => configure.ForInstallationOn <Windows>().Install());

            Console.WriteLine("Press enter to publish a message");
            Console.WriteLine("Press any key to exit");
            while (true)
            {
                ConsoleKeyInfo key = Console.ReadKey();
                Console.WriteLine();

                if (key.Key != ConsoleKey.Enter)
                {
                    return;
                }
                bus.Publish <V2.Messages.ISomethingHappened>(sh =>
                {
                    sh.SomeData = 1;
                    sh.MoreInfo = "It's a secret.";
                });

                Console.WriteLine("Published event.");
            }
        }
    }
Example #19
0
    static void Main()
    {
        Console.Title = "Samples.StartupShutdown";
        #region Program
        Logger.WriteLine("Starting configuration");
        Configure configure = Configure.With();
        configure.Log4Net();
        configure.DefineEndpointName("Samples.StartupShutdown");

        configure.DefaultBuilder();
        configure.MsmqTransport();

        Logger.WriteLine("Calling Configure.UnicastBus");
        ConfigUnicastBus unicastBus = configure.UnicastBus();

        Logger.WriteLine("Calling ConfigUnicastBus.CreateBus");
        using (IStartableBus startableBus = unicastBus.CreateBus())
        {
            Logger.WriteLine("Calling IStartableBus.Start");
            IBus bus = startableBus
                       .Start(() =>
            {
                Logger.WriteLine("Calling ForInstallationOn.Install");
                configure.ForInstallationOn <Windows>().Install();
            });

            //simulate some activity
            Thread.Sleep(500);

            Logger.WriteLine("Bus is processing messages");
            Logger.WriteLine("Calling IStartableBus.Dispose");
        }
        Logger.WriteLine("Finished");
        #endregion
        Console.WriteLine("Press any key to exit");
        Console.ReadKey();
    }
Example #20
0
    static void Main()
    {
        Console.Title = "Samples.UsernameHeader.Endpoint2";
        Configure configure = Configure.With();

        configure.Log4Net();
        configure.DefineEndpointName("Samples.UsernameHeader.Endpoint2");
        configure.DefaultBuilder();
        configure.MsmqTransport();
        configure.InMemorySagaPersister();
        configure.RunTimeoutManagerWithInMemoryPersistence();
        configure.InMemorySubscriptionStorage();
        configure.JsonSerializer();
        #region manipulate-principal
        ConfigUnicastBus unicastBus = configure.UnicastBus();
        unicastBus.ImpersonateSender(true);
        using (IStartableBus startableBus = unicastBus.CreateBus())
        {
            #endregion
            startableBus.Start(() => configure.ForInstallationOn <Windows>().Install());
            Console.WriteLine("Press any key to exit");
            Console.ReadKey();
        }
    }
Example #21
0
    static void Main()
    {
        Configure.Serialization.Json();
        #region ContainerConfiguration
        Configure configure = Configure.With();
        configure.Log4Net();
        configure.DefineEndpointName("Samples.Spring");
        GenericApplicationContext applicationContext = new GenericApplicationContext();
        applicationContext.ObjectFactory.RegisterSingleton("MyService", new MyService());
        configure.SpringFrameworkBuilder(applicationContext);
        #endregion
        configure.InMemorySagaPersister();
        configure.UseInMemoryTimeoutPersister();
        configure.InMemorySubscriptionStorage();
        configure.UseTransport <Msmq>();
        IBus bus = configure.UnicastBus()
                   .CreateBus()
                   .Start(() => Configure.Instance.ForInstallationOn <Windows>().Install());

        bus.SendLocal(new MyMessage());

        Console.WriteLine("\r\nPress any key to stop program\r\n");
        Console.ReadKey();
    }
Example #22
0
    static void Main()
    {
        #region self-hosting

        Configure configure = Configure.With();
        configure.DefineEndpointName("Samples.SelfHosting");
        configure.Log4Net();
        configure.DefaultBuilder();
        configure.Sagas();
        configure.MsmqTransport();
        configure.InMemorySagaPersister();
        configure.UseInMemoryTimeoutPersister();
        configure.InMemorySubscriptionStorage();
        configure.JsonSerializer();

        IBus bus = configure.UnicastBus()
                   .CreateBus()
                   .Start(() => Configure.Instance.ForInstallationOn <Windows>().Install());

        #endregion

        Console.WriteLine("\r\nBus created and configured; press any key to stop program\r\n");
        Console.ReadKey();
    }
Example #23
0
    static void Main()
    {
        #region startbus
        Configure configure = Configure.With();
        configure.Log4Net();
        configure.DefineEndpointName("Samples.OwinPassThrough");
        configure.DefaultBuilder();
        configure.MsmqTransport();
        configure.InMemorySagaPersister();
        configure.UseInMemoryTimeoutPersister();
        configure.InMemorySubscriptionStorage();
        configure.JsonSerializer();
        using (IStartableBus startableBus = configure.UnicastBus().CreateBus())
        {
            IBus bus = startableBus.Start(() => configure.ForInstallationOn <Windows>().Install());
            using (StartOwinHost(bus))
            {
                Console.WriteLine("Press any key to exit");
                Console.ReadKey();
            }
        }

        #endregion
    }
Example #24
0
    static void Main()
    {
        Console.Title = "Samples.Scaleout.Worker1";
        #region Workerstartup
        Configure configure = Configure.With();
        configure.Log4Net();
        configure.DefineEndpointName("Samples.Scaleout.Worker1");
        configure.DefaultBuilder();
        configure.EnlistWithDistributor();
        #endregion

        Address.InitializeLocalAddress("Samples.Scaleout.Worker1");
        configure.MsmqTransport();
        configure.InMemorySagaPersister();
        configure.InMemorySubscriptionStorage();
        configure.JsonSerializer();
        using (IStartableBus startableBus = configure.UnicastBus().CreateBus())
        {
            startableBus.Start(() => configure.ForInstallationOn <Windows>().Install());

            Console.WriteLine("Press any key to exit");
            Console.ReadKey();
        }
    }
Example #25
0
    protected override void OnStart(string[] args)
    {
        #region logging
        PatternLayout layout = new PatternLayout
        {
            ConversionPattern = "%d %-5p %c - %m%n"
        };
        layout.ActivateOptions();
        ConsoleAppender appender = new ConsoleAppender
        {
            Layout    = layout,
            Threshold = Level.Info
        };
        appender.ActivateOptions();

        BasicConfigurator.Configure(appender);

        SetLoggingLibrary.Log4Net();
        #endregion

        #region create-config
        Configure configure = Configure.With();
        #endregion
        #region endpoint-name
        configure.DefineEndpointName("Samples.FirstEndpoint");
        #endregion

        #region container
        ContainerBuilder builder = new ContainerBuilder();
        //configure your custom services
        //builder.RegisterInstance(new MyService());
        IContainer container = builder.Build();
        configure.AutofacBuilder(container);
        #endregion

        #region serialization
        Configure.Serialization.Json();
        #endregion

        #region transport
        configure.UseTransport <Msmq>();
        #endregion

        #region sagas
        Configure.Features.Enable <Sagas>();
        #endregion

        #region persistence
        configure.InMemorySagaPersister();
        configure.UseInMemoryTimeoutPersister();
        configure.InMemorySubscriptionStorage();
        #endregion

        #region critical-errors
        Configure.Instance.DefineCriticalErrorAction((errorMessage, exception) =>
        {
            // Log the critical error
            logger.Fatal(string.Format("CRITICAL: {0}", errorMessage), exception);

            // Kill the process on a critical error
            Environment.FailFast(string.Format("The following critical error was encountered by NServiceBus:\n{0}\nNServiceBus is shutting down.", errorMessage), exception);
        });
        #endregion

        #region start-bus
        bus = configure.UnicastBus()
              .CreateBus()
              .Start(() => configure.ForInstallationOn <Windows>().Install());
        #endregion
    }
Example #26
0
    static void Main()
    {
        #region ConfigureLog4Net

        PatternLayout layout = new PatternLayout
        {
            ConversionPattern = "%d [%t] %-5p %c [%x] - %m%n"
        };
        layout.ActivateOptions();
        ColoredConsoleAppender consoleAppender = new ColoredConsoleAppender
        {
            Threshold = Level.Info,
            Layout    = layout
        };
        // Note that no consoleAppender.ActivateOptions(); is required since NSB 4 does this internally

        RollingFileAppender fileAppender = new RollingFileAppender
        {
            DatePattern        = "yyyy-MM-dd'.txt'",
            RollingStyle       = RollingFileAppender.RollingMode.Composite,
            MaxFileSize        = 10 * 1024 * 1024,
            MaxSizeRollBackups = 10,
            LockingModel       = new FileAppender.MinimalLock(),
            StaticLogFileName  = false,
            File         = @"nsblog2",
            Layout       = layout,
            AppendToFile = true,
            Threshold    = Level.Info,
        };
        // Note that no fileAppender.ActivateOptions(); is required since NSB 4 does this internally
        BasicConfigurator.Configure(fileAppender, consoleAppender);

        #endregion

        Configure.Serialization.Json();

        #region UseConfig

        Configure configure = Configure.With();
        configure.DefineEndpointName("Samples.Logging.Log4NetCustom");

        //Pass the appenders to NServiceBus
        configure.Log4Net(consoleAppender);
        configure.Log4Net(fileAppender);

        #endregion

        configure.DefaultBuilder();
        configure.InMemorySagaPersister();
        configure.UseInMemoryTimeoutPersister();
        configure.InMemorySubscriptionStorage();
        configure.UseTransport <Msmq>();
        using (IStartableBus startableBus = configure.UnicastBus().CreateBus())
        {
            IBus bus = startableBus.Start(() => configure.ForInstallationOn <Windows>().Install());
            bus.SendLocal(new MyMessage());

            Console.WriteLine("\r\nPress any key to stop program\r\n");
            Console.ReadKey();
        }
    }
    protected override void OnStart(string[] args)
    {
        #region logging
        PatternLayout layout = new PatternLayout
        {
            ConversionPattern = "%d %-5p %c - %m%n"
        };
        layout.ActivateOptions();
        ConsoleAppender appender = new ConsoleAppender
        {
            Layout    = layout,
            Threshold = Level.Info
        };
        appender.ActivateOptions();

        BasicConfigurator.Configure(appender);

        SetLoggingLibrary.Log4Net();
        #endregion

        #region create-config
        Configure configure = Configure.With();
        configure.DefineEndpointName("Samples.FirstEndpoint");
        #endregion

        #region container
        ContainerBuilder builder = new ContainerBuilder();
        //configure custom services
        //builder.RegisterInstance(new MyService());
        IContainer container = builder.Build();
        configure.AutofacBuilder(container);
        #endregion

        #region serialization
        configure.JsonSerializer();
        #endregion

        #region transport
        configure.MsmqTransport();
        #endregion

        #region sagas
        configure.Sagas();
        #endregion

        #region persistence
        configure.InMemorySagaPersister();
        configure.UseInMemoryTimeoutPersister();
        configure.InMemorySubscriptionStorage();
        #endregion

        #region critical-errors
        Configure.Instance.DefineCriticalErrorAction(() =>
        {
            //Write log entry in version 3 since this is not done by default.
            logger.Fatal("CRITICAL Error");

            // Kill the process on a critical error
            string output = "Critical error was encountered by NServiceBus:\nNServiceBus is shutting down.";
            Environment.FailFast(output);
        });
        #endregion

        #region start-bus
        bus = configure.UnicastBus()
              .CreateBus()
              .Start(() => configure.ForInstallationOn <Windows>().Install());
        #endregion

        bus.SendLocal(new MyMessage());
    }