Пример #1
0
        public async Task Send_message_to_test_consumer()
        {
            // add migrations by calling
            // dotnet ef migrations add --context auditdbcontext --output-dir Migrations\\Audit audit_init
            DbContextOptionsBuilder <AuditDbContext> optionsBuilder = new DbContextOptionsBuilder <AuditDbContext>().
                                                                      UseSqlServer(LocalDbConnectionStringProvider.GetLocalDbConnectionString(),
                                                                                   m =>
            {
                var executingAssembly = typeof(ContextFactory).GetTypeInfo().Assembly;

                m.MigrationsAssembly(executingAssembly.GetName().Name);
                m.MigrationsHistoryTable("__AuditEFMigrationHistoryAudit");
            });

            _store = new EntityFrameworkAuditStore(optionsBuilder.Options, "EfCoreAudit");
            using (var dbContext = _store.AuditContext)
            {
                await dbContext.Database.MigrateAsync();

                await dbContext.Database.ExecuteSqlCommandAsync("TRUNCATE TABLE EfCoreAudit");
            }

            _harness = new InMemoryTestHarness();
            _harness.OnConnectObservers += bus =>
            {
                bus.ConnectSendAuditObservers(_store);
                bus.ConnectConsumeAuditObserver(_store);
            };
            _harness.Consumer <TestConsumer>();

            await _harness.Start();

            await _harness.InputQueueSendEndpoint.Send(new A());
        }
Пример #2
0
        static void ConfigureAuditStore(IBusFactoryConfigurator configurator, DbContextOptionsBuilder dbContextOptions, string auditTableName,
                                        Action <IMessageFilterConfigurator> configureFilter = default)
        {
            var auditStore = new EntityFrameworkAuditStore(dbContextOptions.Options, auditTableName);

            configurator.ConnectSendAuditObservers(auditStore, configureFilter);
            configurator.ConnectConsumeAuditObserver(auditStore, configureFilter);
        }
Пример #3
0
        public async Task Send_message_to_test_consumer()
        {
            _store = new EntityFrameworkAuditStore(
                LocalDbConnectionStringProvider.GetLocalDbConnectionString(), "audit");
            using (var dbContext = _store.AuditContext)
                await dbContext.Database.ExecuteSqlCommandAsync("TRUNCATE TABLE audit");

            _harness = new InMemoryTestHarness();
            _harness.OnConnectObservers += bus =>
            {
                bus.ConnectSendAuditObservers(_store);
                bus.ConnectConsumeAuditObserver(_store);
            };
            _consumer = _harness.Consumer <TestConsumer>();

            await _harness.Start();

            await _harness.InputQueueSendEndpoint.Send(new A());
        }
Пример #4
0
        public async Task SetUp()
        {
            var contextFactory = new AuditContextFactory();

            await using (var context = contextFactory.CreateDbContext(DbContextOptionsBuilder))
            {
                await context.Database.MigrateAsync();
            }

            _store = new EntityFrameworkAuditStore(DbContextOptionsBuilder.Options, "EfCoreAudit");

            _harness = new InMemoryTestHarness();
            _harness.OnConnectObservers += bus =>
            {
                bus.ConnectSendAuditObservers(_store);
                bus.ConnectConsumeAuditObserver(_store);
            };
            _harness.Consumer <TestConsumer>();

            await _harness.Start();

            await _harness.InputQueueSendEndpoint.Send(new A());
        }
Пример #5
0
        public async Task Send_message_to_test_consumer()
        {
            Database.SetInitializer(new DropCreateDatabaseAlways <AuditDbContext>());

            _store = new EntityFrameworkAuditStore(
                LocalDbConnectionStringProvider.GetLocalDbConnectionString(), "audit");
            using (var dbContext = _store.AuditContext)
            {
                dbContext.Database.Initialize(true);
                await dbContext.Database.ExecuteSqlCommandAsync("TRUNCATE TABLE audit");
            }

            _harness = new InMemoryTestHarness();
            _harness.OnConfigureInMemoryBus += configurator =>
            {
                configurator.ConnectSendAuditObservers(_store);
                configurator.ConnectConsumeAuditObserver(_store);
            };
            _consumer = _harness.Consumer <TestConsumer>();

            await _harness.Start();

            await _harness.InputQueueSendEndpoint.Send(new A());
        }
Пример #6
0
        // be sure to set the C# language version to 7.3 or later
        public static async Task Main()
        {
            const string cons = @"Server=.\SQLEXPRESS;Database=Cv;Trusted_Connection=true";

            LoggerFactory f = new LoggerFactory();

            f.AddProvider(new ConsoleLoggerProvider(new MCalss()));

            var busControl = Bus.Factory.CreateUsingRabbitMq(cfg =>
            {
                cfg.Host(Config.Host, x =>
                {
                    x.Password(Config.Password);
                    x.Username(Config.Username);
                });
                //cfg.Host().Settings
                cfg.SetLoggerFactory(f);
            });

            DbContextOptionsBuilder <AuditDbContext> builder = new DbContextOptionsBuilder <AuditDbContext>();

            builder.UseSqlServer(cons);
            var auditStore = new EntityFrameworkAuditStore(builder.Options, "rabbitAudit");

            //https://dev.to/etnicholson/developing-a-crudapi-with-asp-net-core-mongodb-docker-swagger-cf4

            busControl.ConnectSendAuditObservers(auditStore);
            //busControl.ConnectConsumeAuditObserver(auditStore);

            // Important! The bus must be started before using it!
            await busControl.StartAsync();

            try
            {
                do
                {
                    string value = await Task.Run(() =>
                    {
                        Console.WriteLine("Enter message (or quit to exit)");
                        Console.Write("> ");
                        return(Console.ReadLine());
                    });

                    if ("quit".Equals(value, StringComparison.OrdinalIgnoreCase))
                    {
                        break;
                    }

                    await busControl.Publish <MyMessage>(new MyMessage
                    {
                        Text = value
                    }, ctx => {
                        ctx.Headers.Set("kaspersheader", "1234");
                    });
                }while (true);
            }
            finally
            {
                await busControl.StopAsync();
            }
        }