コード例 #1
0
        public RabbitMQCommandSender(RabbitMQBusContext context)
        {
            Channel         = context.Connection.CreateModel();
            _replyQueueName = Channel.QueueDeclare("", false, false, true).QueueName;
            _logger         = NijnLogger.CreateLogger <RabbitMQCommandSender>();

            _consumer           = new EventingBasicConsumer(Channel);
            _consumer.Received += (model, ea) =>
            {
                if (!_callbackMapper.TryRemove(ea.BasicProperties.CorrelationId, out var tcs))
                {
                    return;
                }
                var body    = ea.Body;
                var message = Encoding.UTF8.GetString(body);

                _logger.LogInformation("Received command answer with correlation id {0}", ea.BasicProperties.CorrelationId);

                var commandResponse =
                    new CommandResponseMessage(message, ea.BasicProperties.Type, ea.BasicProperties.CorrelationId);
                tcs.TrySetResult(commandResponse);
            };

            _logger.LogInformation("Created response queue with name {0}", _replyQueueName);
        }
コード例 #2
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...");
        }
コード例 #3
0
        public MicroserviceHost(IBusContext <IConnection> context, List <EventListener> eventListeners,
                                List <CommandListener> commandListeners, IServiceCollection provider, Assembly callingAssembly, bool exitOnTimeout, TimeSpan timeout, bool dontPublishNewEvents)
        {
            Context = context;
            context.DontPublishEvents = dontPublishNewEvents;

            if (eventListeners == null)
            {
                eventListeners = new List <EventListener>();
            }
            if (commandListeners == null)
            {
                commandListeners = new List <CommandListener>();
            }

            _eventListeners       = eventListeners;
            _commandListeners     = commandListeners;
            _callingAssembly      = callingAssembly;
            _exitOnTimeout        = exitOnTimeout;
            _timeout              = timeout;
            _dontPublishNewEvents = dontPublishNewEvents;
            _logger = NijnLogger.CreateLogger <MicroserviceHost>();

            if (provider != null)
            {
                Provider = provider.BuildServiceProvider();
            }
        }
コード例 #4
0
        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...");
        }
        public BestellingListener(IBestellingDatamapper datamapper, IKlantDatamapper klantDatamapper,
                                  ICommandPublisher commandPublisher,
                                  IEventPublisher eventPublisher)

        {
            _datamapper       = datamapper;
            _klantDatamapper  = klantDatamapper;
            _commandPublisher = commandPublisher;
            _eventPublisher   = eventPublisher;
            _logger           = NijnLogger.CreateLogger <BestellingListener>();
        }
コード例 #6
0
        public RabbitMQMessageReceiver(RabbitMQBusContext context, string queueName, IEnumerable <string> topicExpressions)
        {
            _log = NijnLogger.CreateLogger <RabbitMQMessageReceiver>();

            QueueName        = queueName;
            TopicExpressions = topicExpressions;
            Channel          = context.Connection.CreateModel();

            ExchangeName = context.ExchangeName;

            _listening     = false;
            _queueDeclared = false;
        }
コード例 #7
0
 public CommandListener(MethodCommandInfo methodCommandInfo)
 {
     _methodCommandInfo = methodCommandInfo;
     QueueName          = _methodCommandInfo.QueueName;
     _logger            = NijnLogger.CreateLogger <CommandListener>();
 }
コード例 #8
0
 public MicroserviceHostBuilder()
 {
     _log = NijnLogger.CreateLogger <MicroserviceHostBuilder>();
 }
コード例 #9
0
 public RabbitMQContextBuilder()
 {
     _log = NijnLogger.CreateLogger <RabbitMQContextBuilder>();
 }
 public BestellingListener(IBestellingDatamapper datamapper)
 {
     _datamapper = datamapper;
     _logger     = NijnLogger.CreateLogger <BestellingListener>();
 }
コード例 #11
0
 public RabbitMQBusContext(IConnection connection, string exchangeName)
 {
     _log         = NijnLogger.CreateLogger <RabbitMQBusContext>();
     Connection   = connection;
     ExchangeName = exchangeName;
 }
コード例 #12
0
 public AccountCommandListener(SignInManager <IdentityUser> signinManager, UserManager <IdentityUser> userManager)
 {
     _signinManager = signinManager;
     _userManager   = userManager;
     _logger        = NijnLogger.CreateLogger <AccountCommandListener>();
 }
コード例 #13
0
 public CommandPublisher(IBusContext <IConnection> context)
 {
     Sender  = context.CreateCommandSender();
     _logger = NijnLogger.CreateLogger <CommandPublisher>();
 }
コード例 #14
0
 public KlantListener(IKlantDatamapper datamapper, IEventPublisher eventPublisher)
 {
     _datamapper     = datamapper;
     _eventPublisher = eventPublisher;
     _logger         = NijnLogger.CreateLogger <KlantListener>();
 }
 public AuthenticatieController(ICommandPublisher commandPublisher)
 {
     _commandPublisher = commandPublisher;
     _logger           = NijnLogger.CreateLogger <AuthenticatieController>();
 }
コード例 #16
0
 public CommandPublisher(IBusContext <IConnection> context)
 {
     Sender   = context.CreateCommandSender();
     _logger  = NijnLogger.CreateLogger <CommandPublisher>();
     assembly = Assembly.GetEntryAssembly();
 }
コード例 #17
0
 public MagazijnListener(IArtikelDatamapper datamapper)
 {
     _datamapper = datamapper;
     _logger     = NijnLogger.CreateLogger <MagazijnListener>();
 }
コード例 #18
0
 public RabbitMQCommandReceiver(RabbitMQBusContext context, string queueName)
 {
     _channel  = context.Connection.CreateModel();
     QueueName = queueName;
     _log      = NijnLogger.CreateLogger <RabbitMQCommandReceiver>();
 }
コード例 #19
0
 public RabbitMQMessageSender(RabbitMQBusContext context)
 {
     Channel      = context.Connection.CreateModel();
     ExchangeName = context.ExchangeName;
     _log         = NijnLogger.CreateLogger <RabbitMQMessageSender>();
 }
 public BestellingenController(ICommandPublisher commandPublisher, IBestellingDatamapper datamapper)
 {
     _commandPublisher = commandPublisher;
     _datamapper       = datamapper;
     _logger           = NijnLogger.CreateLogger <BestellingenController>();
 }