Esempio n. 1
0
        public static async Task PublishEventToAzure(string messageText, NServiceBusConfiguration nServiceBusSettings,
                                                     bool useLearningTransport = false)
        {
            var endpointConfiguration = new EndpointConfiguration(nServiceBusSettings.Endpoint)
                                        .UseLicense(nServiceBusSettings.LicenceText)
                                        .UseAzureServiceBusTransport(false, () => nServiceBusSettings.ServiceBusConnectionString,
                                                                     r =>
            {
                r.RouteToEndpoint(typeof(StringMessageEvent), nServiceBusSettings.Endpoint + "/my-topic");
            })
                                        .UseNewtonsoftJsonSerializer();

            endpointConfiguration.SendOnly();

            var endpointInstance = await Endpoint.Start(endpointConfiguration)
                                   .ConfigureAwait(false);

            //var options = new PublishOptions();

            var message = new StringMessageEvent(messageText);

            await endpointInstance.Publish(message) //, options)
            .ConfigureAwait(false);

            System.Console.WriteLine($"Published event: {message}");
        }
Esempio n. 2
0
        static async Task Main(string[] args)
        {
            var builder = new ConfigurationBuilder()
                          .SetBasePath(Directory.GetCurrentDirectory())
                          .AddJsonFile("appsettings.json");

            var configuration = builder.Build();

            var nServiceBusSettings = new NServiceBusConfiguration();

            configuration.GetSection("NServiceBusConfiguration").Bind(nServiceBusSettings);
            var useLearningTransport = configuration.GetValue <bool>("UseLearningTransport");

            System.Console.WriteLine($"NServiceBus Settings:");
            System.Console.WriteLine($"    UseLearningTransport {useLearningTransport}");
            System.Console.WriteLine($"    Local Endpoint {nServiceBusSettings.LocalEndpoint}");
            System.Console.WriteLine($"    Endpoint {nServiceBusSettings.Endpoint}");
            System.Console.WriteLine($"    Service bus {nServiceBusSettings.ServiceBusConnectionString}");
            System.Console.WriteLine($"    License {nServiceBusSettings.LicenceText}");

            var runOptionKey = GetRunOption();

            while (runOptionKey != ConsoleKey.Q && runOptionKey != ConsoleKey.Escape)
            {
                try
                {
                    switch (runOptionKey)
                    {
                    case ConsoleKey.D1:
                    case ConsoleKey.NumPad1:
                        await SendMessage("Hello World", nServiceBusSettings, useLearningTransport);

                        break;

                    case ConsoleKey.D2:
                    case ConsoleKey.NumPad2:
                    case ConsoleKey.Enter:     //Default
                        await SendMessageToAzure("Hello World", nServiceBusSettings, false);

                        break;

                    case ConsoleKey.D3:
                    case ConsoleKey.NumPad3:
                        await PublishEventToAzure("Hello World", nServiceBusSettings, false);

                        break;
                    }
                }
                catch (Exception ex)
                {
                    Debug.Print($"An exception has occurred. {ex}");
                    System.Console.WriteLine($"An exception has occurred. {ex}");
                }

                System.Console.WriteLine("....");
                runOptionKey = GetRunOption();
            }
        }
        public static void StartConfiguredEndpoints(
            IConfigurationRoot configurationRoot,
            IContainer container,
            IDictionary <string, string[]> endpointToTopicMapping,
            Action <EndpointConfiguration> allEndpointSetupOptions = null,
            IDictionary <string, Action <EndpointConfiguration> > setupEndpointOptions = null)
        {
            var endpointInstanceProvider = container.Resolve <IEndpointInstanceProvider>() as EndpointInstanceProvider;

            if (endpointInstanceProvider == null)
            {
                throw new Exception("Could not resolve IEndpointInstanceProvider from given container. Make sure its registered with AddNServiceBus or manually.");
            }

            var section = configurationRoot.GetSection(nameof(NServiceBusConfiguration));
            var nServiceBusConfiguration = new NServiceBusConfiguration();

            section.Bind(nServiceBusConfiguration);

            var busEndpointConfigurations = nServiceBusConfiguration.Endpoints;

            foreach (var busEndpointOptions in busEndpointConfigurations)
            {
                var endpointConfiguration = new EndpointConfiguration(busEndpointOptions.Name);
                endpointConfiguration.SendFailedMessagesTo(busEndpointOptions.FailedMessagesQueueName);
                endpointConfiguration.UseSerialization <JsonSerializer>();
                endpointConfiguration.EnableInstallers();
                endpointConfiguration.UsePersistence <InMemoryPersistence>();
                endpointConfiguration.UseContainer <AutofacBuilder>(
                    customizations => customizations.ExistingLifetimeScope(container));

                allEndpointSetupOptions?.Invoke(endpointConfiguration);
                if (setupEndpointOptions != null && setupEndpointOptions.ContainsKey(busEndpointOptions.Name))
                {
                    var setupFunc = setupEndpointOptions[busEndpointOptions.Name];
                    setupFunc?.Invoke(endpointConfiguration);
                }

                var endpointInstance = Endpoint.Start(endpointConfiguration).ConfigureAwait(false).GetAwaiter().GetResult();
                if (endpointToTopicMapping.ContainsKey(busEndpointOptions.Name))
                {
                    var topicNames = endpointToTopicMapping[busEndpointOptions.Name];
                    foreach (var topicName in topicNames)
                    {
                        endpointInstanceProvider.Add(topicName, busEndpointOptions.Name, endpointInstance);
                    }
                }
                else
                {
                    // Todo: throw warning that no mapping exist to an endpoint (maybe no need for handler only)
                    var loggerFactory = container.Resolve <ILoggerFactory>();
                    var logger        = loggerFactory.CreateLogger(typeof(NServiceBusServiceCollectionExtensions));
                    logger.LogWarning($"Endpoint instance {busEndpointOptions.Name} does not have mapping to topics. Make sure you did not forget to add mappings.");
                }
            }
        }
Esempio n. 4
0
    public void ConfigureServices(IServiceCollection services)
    {
        //#region EndpointConfiguration

        //var builder = new ConfigurationBuilder().AddCloudFoundry();

        //Console.WriteLine("Building the configuration");
        //var config = builder.Build();

        //Console.WriteLine("Looking for the RabbitMQ URI");

        //string uri = config["vcap:services:p-rabbitmq:0:credentials:dashboard_url"];

        //Console.WriteLine(uri);
        //var endpointConfiguration = new EndpointConfiguration("Samples.ASPNETCore.Sender");
        //var transport = endpointConfiguration.UseTransport<RabbitMQTransport>();
        //transport.UseConventionalRoutingTopology();
        //transport.ConnectionString(uri);


        ////endpointConfiguration.EnableInstallers();
        //endpointConfiguration.UsePersistence<InMemoryPersistence>();
        //endpointConfiguration.SendOnly();

        //#endregion

        //#region Routing

        //var routing = transport.Routing();
        //routing.RouteToEndpoint(
        //    assembly: typeof(MyMessage).Assembly,
        //    destination: "Samples.ASPNETCore.Endpoint");

        //#endregion

        //#region EndpointStart
        //Console.WriteLine("Starting endpoint");
        //var endpointInstance = Endpoint.Start(endpointConfiguration).GetAwaiter().GetResult();

        //Console.WriteLine("Started endpoint");

        //#endregion

        var endpointInstance = NServiceBusConfiguration.Setup();

        #region ServiceRegistration

        Console.WriteLine("Setting IMessageSession");
        services.AddSingleton <IMessageSession>(endpointInstance);

        #endregion

        services.AddMvc();
    }
Esempio n. 5
0
 public Sender(NServiceBusConfiguration nServiceBusConfig,
               IEndpointInstance endpointInstance,
               IEventPublisher publisher,
               IUnitOfWorkContext unitOfWorkContext)
 //, ILog log)
 {
     //_log = log;
     _nServiceBusConfig = nServiceBusConfig;
     Publisher          = publisher;
     EndpointInstance   = endpointInstance;
     _unitOfWorkContext = unitOfWorkContext;
 }
Esempio n. 6
0
    static async Task MainAsync(string[] args)
    {
        try
        {
            NServiceBusConfiguration.Setup();
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex);
        }

        await Task.Delay(-1);
    }
        public void GivenJsonConfigurationGivenBadNameShouldThrow()
        {
            var configurationBuilder = new ConfigurationBuilder();

            configurationBuilder.AddJsonFile("TestSettings.json");

            var root    = configurationBuilder.Build();
            var section = root.GetSection(nameof(NServiceBusConfiguration));

            var configuration = new NServiceBusConfiguration();

            section.Bind(configuration);

            var config = configuration.GetByName("non existing one");
        }
        public void GivenJsonConfigurationShouldParseCorrectly()
        {
            var configurationBuilder = new ConfigurationBuilder();

            configurationBuilder.AddJsonFile("TestSettings.json");

            var root    = configurationBuilder.Build();
            var section = root.GetSection(nameof(NServiceBusConfiguration));

            var configuration = new NServiceBusConfiguration();

            section.Bind(configuration);

            Assert.AreEqual(2, configuration.Endpoints.Length);
        }
Esempio n. 9
0
 public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args)
 .ConfigureServices((context, container) => {
     container.AddSingleton <IEventsFactory, EventsFactory>();
     container.AddScoped <IPortfolioHistoryRepository, PortfolioHistoryRepository>();
     container.AddDbContext <PortfolioHistoryContext>(options => options.UseSqlServer(context.Configuration.GetValue <string>(ConfigurationConstants.HistoryConnectionString),
                                                                                      b => b.MigrationsAssembly("FundAggregator.Portfolio.Service")));;
 })
 .UseNServiceBus(context => {
     var nServiceBusConfigurations = new NServiceBusSettings()
     {
         EndpointName = context.Configuration.GetValue <string>(ConfigurationConstants.ServiceName),
         PersistenceConnectionString = context.Configuration.GetValue <string>(ConfigurationConstants.PersistenceConnectionString)
     };
     var endpointConfiguration = NServiceBusConfiguration.ConfigureEndpoint(nServiceBusConfigurations);
     return(endpointConfiguration);
 });
        public void GivenJsonConfigurationShouldGetByName()
        {
            var configurationBuilder = new ConfigurationBuilder();

            configurationBuilder.AddJsonFile("TestSettings.json");

            var root    = configurationBuilder.Build();
            var section = root.GetSection(nameof(NServiceBusConfiguration));

            var configuration = new NServiceBusConfiguration();

            section.Bind(configuration);

            var config = configuration.GetByName("Schroders.Product.Handler");

            Assert.IsNotNull(config);
        }
Esempio n. 11
0
        // This method gets called by the runtime. Use this method to add services to the container.
        // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
        public IServiceProvider ConfigureServices(IServiceCollection services)
        {
            services.AddTransient <DbConnection>(provider =>
                                                 new SqlConnection(Configuration.GetConnectionString("DatabaseConnectionString")));

            //Need the serviceprovider so we can get the DBConnection back
            var sp = services.BuildServiceProvider();

            services.AddMvc();

            var container = ConfigureIOC(services);

            var nServiceBusSettings = new NServiceBusConfiguration();

            Configuration.GetSection("NServiceBusConfiguration").Bind(nServiceBusSettings);

            var useLearningTransport = Configuration.GetValue <bool>("UseLearningTransport");

            var endpointConfiguration = new EndpointConfiguration(nServiceBusSettings.Endpoint)
                                        //.UseAzureServiceBusTransport(useLearningTransport, () => nServiceBusSettings.ServiceBusConnectionString, r => { })
                                        .UseAzureServiceBusTransport(useLearningTransport,
                                                                     () => nServiceBusSettings.ServiceBusConnectionString,
                                                                     r =>
            {
                //r.RouteToEndpoint(typeof(StringMessage),
                //    nServiceBusSettings.Endpoint);
                //r.RouteToEndpoint(typeof(StringMessageEvent),
                //    nServiceBusSettings.Endpoint + "/my-topic");
            })
                                        .UseLicense(nServiceBusSettings.LicenceText)
                                        .UseInstallers()
                                        .UseSqlServerPersistence(() => sp.GetService <DbConnection>())
                                        .UseStructureMapBuilder(container)
                                        .UseNewtonsoftJsonSerializer()
                                        //.UseErrorQueue()
                                        //.UseNLogFactory()
                                        .UseOutbox()
                                        .UseUnitOfWork();

            services.AddNServiceBus(endpointConfiguration);

            container.Populate(services);

            return(container.GetInstance <IServiceProvider>());
        }
Esempio n. 12
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.Configure <CookiePolicyOptions>(options =>
            {
                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                options.CheckConsentNeeded    = context => true;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });


            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

            var nsb = new NServiceBusConfiguration();

            //nsb.RegisterTypes(services);

            nsb.Configure(services);
        }
Esempio n. 13
0
        public static async Task SendMessageToAzure(string messageText, NServiceBusConfiguration nServiceBusSettings, bool useLearningTransport = false)
        {
            var endpointConfiguration = new EndpointConfiguration("ClientEndpoint")
                                        .UseLicense(nServiceBusSettings.LicenceText)
                                        .UseAzureServiceBusTransport(false,
                                                                     () => nServiceBusSettings.ServiceBusConnectionString,
                                                                     r => r.RouteToEndpoint(typeof(StringMessage).GetAssembly(), nServiceBusSettings.Endpoint))
                                        .UseNewtonsoftJsonSerializer();

            endpointConfiguration.SendOnly();

            var endpointInstance = await Endpoint.Start(endpointConfiguration)
                                   .ConfigureAwait(false);

            var message = new StringMessage(messageText);
            await endpointInstance.Send(message) //, options)
            .ConfigureAwait(false);

            System.Console.WriteLine($"Sent message: {message}");
        }
Esempio n. 14
0
        public static async Task SendMessage(string messageText, NServiceBusConfiguration nServiceBusSettings, bool useLearningTransport = false)
        {
            var endpointConfiguration = new EndpointConfiguration(nServiceBusSettings.LocalEndpoint);

            endpointConfiguration.License(nServiceBusSettings.LicenceText);

            if (useLearningTransport)
            {
                endpointConfiguration.UseTransport <LearningTransport>();
            }

            var endpointInstance = await Endpoint.Start(endpointConfiguration)
                                   .ConfigureAwait(false);

            var options = new SendOptions();

            options.SetDestination(nServiceBusSettings.Endpoint);

            var message = new StringMessage(messageText);
            await endpointInstance.Send(message, options)
            .ConfigureAwait(false);

            System.Console.WriteLine($"Sent message: {message}");
        }
Esempio n. 15
0
 public NServiceBusEndpoint(IConfiguration _configuration)
 {
     config = _configuration.GetSection("NServiceBusConfiguration").Get <NServiceBusConfiguration>();
     Initialize().Wait();
 }