public static async Task ScrapeAuditLog(IBusContext <IConnection> mainContext, ServiceCollection collection,
                                                DateTime startTime)
        {
            var exchangeName      = "Audit_Bestelling " + Guid.NewGuid();
            var connectionBuilder = new RabbitMQContextBuilder()
                                    .ReadFromEnvironmentVariables().WithExchange(exchangeName);

            var builder = new MicroserviceHostBuilder();

            builder
            .RegisterDependencies(collection)
            .WithContext(connectionBuilder.CreateContext())
            .ExitAfterIdleTime(new TimeSpan(0, 0, 2, 0))
            .UseConventions();

            builder.CreateHost().StartListeningInOtherThread();

            var publisher = new CommandPublisher(mainContext);

            var replayEventsCommand = new ReplayEventsCommand
            {
                ToTimestamp  = startTime.Ticks,
                ExchangeName = exchangeName
            };

            var result = await publisher.Publish <bool>(replayEventsCommand, "AuditlogReplayService",
                                                        "Minor.WSA.AuditLog.Commands.ReplayEventsCommand");
        }
Example #2
0
        private static IHostBuilder CreateHostBuilder(string[] args)
        {
            var connectionFactory = new ConnectionFactory();
            var contextBuilder    = new RabbitMQContextBuilder(connectionFactory)
                                    .ReadFromEnvironmentVariables();
            IBusContext <IConnection> busContext = contextBuilder.CreateContext();

            return(Host.CreateDefaultBuilder(args)
                   .ConfigureMessageBusWrapperHostDefaults(builder =>
            {
                var types = Assembly.GetEntryAssembly().GetTypes();
            }, busContext)
                   .ConfigureServices((hostContext, services) =>
            {
                services.AddDbContext <PrestatieContext>(e =>
                {
                    e.UseSqlServer(Environment.GetEnvironmentVariable(EnvNames.DbConnectionString));
                    // e.UseLoggerFactory(loggerFactory);
                });
                services.AddTransient <IPrestatieRepository, PrestatieRepository>();

                using var serviceScope = services.BuildServiceProvider().GetRequiredService <IServiceScopeFactory>()
                                         .CreateScope();

                var dbContext = serviceScope.ServiceProvider.GetService <PrestatieContext>();
                dbContext.Database.Migrate();
            }));
        }
Example #3
0
        private static void ConfigureNijn(IServiceCollection services)
        {
            ILoggerFactory loggerFactory = new LoggerFactory();

            loggerFactory.AddProvider(
                new ConsoleLoggerProvider(
                    (text, logLevel) => logLevel >= LogLevel.Debug, true));

            var connectionBuilder = new RabbitMQContextBuilder()
                                    .ReadFromEnvironmentVariables();

            var nijnContext = connectionBuilder.CreateContext();

            services.AddTransient <ICommandPublisher, CommandPublisher>();
            services.AddTransient <IEventPublisher, EventPublisher>();

            var builder = new MicroserviceHostBuilder()
                          .SetLoggerFactory(loggerFactory)
                          .RegisterDependencies(services)
                          .WithContext(nijnContext)
                          .UseConventions();

            var host = builder.CreateHost();

            host.CreateQueues();

            host.StartListeningInOtherThread();

            var logger = NijnLogger.CreateLogger <Program>();

            logger.LogInformation("Started...");
        }
Example #4
0
        public void CreateContext_DeclaresExchangeWithCorrectExchangeName()
        {
            // Arrange
            var channelMock = new Mock <IModel>();

            channelMock.Setup(c => c.ExchangeDeclare("Exchange3",
                                                     "topic",
                                                     false,
                                                     false,
                                                     null))
            .Verifiable();
            var connectionMock = new Mock <IConnection>(MockBehavior.Strict);

            connectionMock.Setup(c => c.CreateModel())
            .Returns(channelMock.Object);
            var connectionFactoryMock = new Mock <IConnectionFactory>(MockBehavior.Strict);

            connectionFactoryMock.Setup(f => f.CreateConnection())
            .Returns(connectionMock.Object);
            var contextBuilder = new RabbitMQContextBuilder().WithExchange("Exchange3")
                                 .WithAddress("localhost", 5672);

            // Act
            var context = contextBuilder.CreateContext(connectionFactoryMock.Object);

            // Assert
            channelMock.VerifyAll();
        }
Example #5
0
        private static IHostBuilder CreateHostBuilder(string[] args)
        {
            var connectionFactory = new ConnectionFactory();
            var contextBuilder    = new RabbitMQContextBuilder(connectionFactory)
                                    .ReadFromEnvironmentVariables();
            IBusContext <IConnection> busContext = contextBuilder.CreateContext();

            return(Host.CreateDefaultBuilder(args)
                   .ConfigureMessageBusWrapperHostDefaults(builder => { }, busContext)
                   // .ConfigureMessageBusWrapperClientDefaults(builder => { }, busContext)
                   .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup <Startup>();
            })
                   .ConfigureServices(services =>
            {
                services.AddDbContext <BFFContext>(e =>
                {
                    e.UseSqlServer(Environment.GetEnvironmentVariable(EnvNames.DbConnectionString));
                });
                services.AddTransient <IKlantRepository, KlantRepository>();
                services.AddTransient <IOefeningRepository, OefeningRepository>();
                services.AddTransient <IPrestatieRepository, PrestatieRepository>();
                services.AddTransient <IWorkoutRepository, WorkoutRepository>();


                // You need to comment this when adding a migration
                using var serviceScope = services.BuildServiceProvider().GetRequiredService <IServiceScopeFactory>()
                                         .CreateScope();
                using var dbContext = serviceScope.ServiceProvider.GetService <BFFContext>();
                dbContext.Database.Migrate();
                // You need to comment this when adding a migration
            }));
        }
        private IBusContext <IConnection> CreateNijnConfig(IServiceCollection serviceCollection)
        {
            //Deprecated method, maar kan even niet anders
            ILoggerFactory loggerFactory = new LoggerFactory();

            loggerFactory.AddProvider(
                new ConsoleLoggerProvider(
                    (text, logLevel) => logLevel >= LogLevel.Debug, true));

            var connectionBuilder = new RabbitMQContextBuilder()
                                    .ReadFromEnvironmentVariables();

            _context = connectionBuilder.CreateContext();

            var builder = new MicroserviceHostBuilder()
                          .SetLoggerFactory(loggerFactory)
                          .RegisterDependencies(serviceCollection)
                          .WithContext(_context)
                          .UseConventions();

            var host = builder.CreateHost();

            host.StartListeningInOtherThread();

            return(_context);
        }
        private static void Main(string[] args)
        {
            var connectionString = Environment.GetEnvironmentVariable("SPRINTERDB");
            var options          = new DbContextOptionsBuilder <BeheerContext>()
                                   .UseNpgsql(connectionString)
                                   .Options;

            ILoggerFactory loggerFactory = new LoggerFactory();

            loggerFactory.AddProvider(
                new ConsoleLoggerProvider(
                    (text, logLevel) => logLevel >= LogLevel.Debug, true));

            var connectionBuilder = new RabbitMQContextBuilder()
                                    .ReadFromEnvironmentVariables();

            var nijnContext = connectionBuilder.CreateContext();

            var services = new ServiceCollection();

            services.AddTransient <ICommandPublisher, CommandPublisher>();
            services.AddTransient <IEventPublisher, EventPublisher>();
            services.AddSingleton <DbContextOptions>(options);
            services.AddTransient <BeheerContext, BeheerContext>();
            services.AddTransient <IArtikelDatamapper, ArtikelDatamapper>();
            services.AddTransient <IBestellingDatamapper, BestellingDatamapper>();
            services.AddSingleton <IBusContext <IConnection> >(nijnContext);
            services.AddTransient <IKlantDatamapper, KlantDatamapper>();

            var builder = new MicroserviceHostBuilder()
                          .SetLoggerFactory(loggerFactory)
                          .RegisterDependencies(services)
                          .WithContext(nijnContext)
                          .UseConventions();

            var host = builder.CreateHost();

            host.CreateQueues();

            using (var context = new BeheerContext(options))
            {
                context.Database.EnsureDeleted();
                context.Database.EnsureCreated();
                if (!context.Artikelen.Any())
                {
                    ScrapeAuditLog(nijnContext, services, DateTime.Now).Wait();
                }
            }

            host.StartListeningInOtherThread();

            var logger = NijnLogger.CreateLogger <Program>();

            logger.LogInformation("Started...");
        }
Example #8
0
        static void Main(string[] args)
        {
            ILoggerFactory loggerFactory = new LoggerFactory();

            loggerFactory.AddProvider(
                new ConsoleLoggerProvider(
                    (text, logLevel) => logLevel >= LogLevel.Debug, true));

            //192.168.99.100
            var connectionBuilder = new RabbitMQContextBuilder()
                                    .WithExchange("MVM.EventExchange")
                                    .WithAddress("192.168.99.100", 5672)
                                    .WithCredentials(userName: "******", password: "******");


            using (var context = connectionBuilder.CreateContext())
            {
                var builder = new MicroserviceHostBuilder()
                              .SetLoggerFactory(loggerFactory)
                              .RegisterDependencies((services) =>
                {
                    services.AddTransient <IDataMapper, SinaasAppelDataMapper>();
                })
                              .WithContext(context)
                              .UseConventions();

                using (var host = builder.CreateHost())
                {
                    host.StartListening();

                    Console.WriteLine("ServiceHost is listening to incoming events...");
                    Console.WriteLine("Press any key to quit.");

                    var publisher = new EventPublisher(context);
                    publisher.Publish(new PolisToegevoegdEvent("MVM.Polisbeheer.PolisToegevoegd")
                    {
                        Message = "Hey"
                    });
                    publisher.Publish(new HenkToegevoegdEvent("Test")
                    {
                        Test = "Oi"
                    });

                    int i = 0;
                    while (true)
                    {
                        Console.ReadKey();
                        Test(context, i);
                        Test(context, i * 100);
                        i++;
                    }
                }
            }
        }
Example #9
0
        public void CreateContext_WithExchangeNameNull_ThrowsArgumentNullException()
        {
            // Arrange
            var contextBuilder = new RabbitMQContextBuilder().WithAddress(null, 5672);

            // Act & Assert
            Assert.ThrowsException <ArgumentNullException>(() =>
            {
                contextBuilder.CreateContext();
            });
        }
Example #10
0
        public void CreateContext_WithPortHigherThan65535_ThrowsArgumentOutOfRangeException()
        {
            // Arrange
            var contextBuilder = new RabbitMQContextBuilder().WithAddress("localhost", 65536);

            // Act & Assert
            var exception = Assert.ThrowsException <ArgumentOutOfRangeException>(() =>
            {
                contextBuilder.CreateContext();
            });

            Assert.AreEqual(nameof(contextBuilder.Port), exception.ParamName);
        }
Example #11
0
        public void CreateContext_WithExchangeNameEmptyString_ThrowsArgumentException()
        {
            // Arrange
            var contextBuilder = new RabbitMQContextBuilder().WithAddress("", 5672);

            // Act & Assert
            var exception = Assert.ThrowsException <ArgumentException>(() =>
            {
                contextBuilder.CreateContext();
            });

            Assert.AreEqual(nameof(contextBuilder.HostName) + " was empty", exception.Message);
        }
        private void ConfigureReplayEvents(IServiceCollection services)
        {
            var contextBuilder = new RabbitMQContextBuilder()
                                 .SetLoggerFactory(_loggerFactory)
                                 .WithConnectionTimeout(5000)
                                 .ReadFromEnvironmentVariables()
                                 .WithExchange(NameConstants.BffWebshopEventReplayExchange);

            using (var context = contextBuilder.CreateContext())
                using (var replayService = new EventReplayService(context, services, 5000))
                {
                    replayService.StartEventReplay();
                }
        }
Example #13
0
        private static IHostBuilder CreateHostBuilder(string[] args)
        {
            var connectionFactory = new ConnectionFactory();
            var contextBuilder = new RabbitMQContextBuilder(connectionFactory)
                .ReadFromEnvironmentVariables();
            IBusContext<IConnection> busContext = contextBuilder.CreateContext();

            return Host.CreateDefaultBuilder(args)
                .ConfigureMessageBusWrapperClientDefaults(builder => { }, busContext)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                    webBuilder.UseSerilog();
                });
        }
Example #14
0
        private void StartEventReplay()
        {
            var timeout = 5000;

            var connectionBuilder = new RabbitMQContextBuilder()
                                    .SetLoggerFactory(_loggerFactory)
                                    .WithConnectionTimeout(timeout)
                                    .ReadFromEnvironmentVariables()
                                    .WithExchange(NameConstants.BestelServiceEventReplayExchange);

            using (var context = connectionBuilder.CreateContext())
                using (var replayService = new EventReplayService(context, _services, timeout))
                {
                    replayService.StartEventReplay();
                }
        }
Example #15
0
        public void CreateContext_ReturnsContextWithCorrectConnection()
        {
            // Arrange
            var channelMock    = new Mock <IModel>();
            var connectionMock = new Mock <IConnection>(MockBehavior.Strict);

            connectionMock.Setup(c => c.CreateModel())
            .Returns(channelMock.Object);
            var connectionFactoryMock = new Mock <IConnectionFactory>(MockBehavior.Strict);

            connectionFactoryMock.Setup(f => f.CreateConnection())
            .Returns(connectionMock.Object);
            var contextBuilder = new RabbitMQContextBuilder().WithExchange("Exchange3")
                                 .WithAddress("localhost", 5672);

            // Act
            var context = contextBuilder.CreateContext(connectionFactoryMock.Object);

            // Assert
            Assert.AreEqual(connectionMock.Object, context.Connection);
        }