/// <summary>
        /// Initializes a new instance of the <see cref="IntegrationEventConsumerBackgroundService"/>
        /// </summary>
        /// <param name="logger">The logger.</param>
        /// <param name="messageBrokerSettingsOptions">The message broker settings options.</param>
        /// <param name="serviceProvider">The service provider.</param>
        public IntegrationEventConsumerBackgroundService(
            ILogger <IntegrationEventConsumerBackgroundService> logger,
            IOptions <MessageBrokerSettings> messageBrokerSettingsOptions,
            IServiceProvider serviceProvider)
        {
            _serviceProvider = serviceProvider;
            MessageBrokerSettings messageBrokerSettings = messageBrokerSettingsOptions.Value;

            var factory = new ConnectionFactory
            {
                HostName = messageBrokerSettings.HostName,
                Port     = messageBrokerSettings.Port,
                UserName = messageBrokerSettings.UserName,
                Password = messageBrokerSettings.Password
            };

            _connection = factory.CreateConnection();

            _channel = _connection.CreateModel();

            _channel.QueueDeclare(messageBrokerSettings.QueueName, false, false, false);

            try
            {
                var consumer = new EventingBasicConsumer(_channel);

                consumer.Received += OnIntegrationEventReceived;

                _channel.BasicConsume(messageBrokerSettings.QueueName, false, consumer);
            }
            catch (Exception e)
            {
                logger.LogCritical($"ERROR: Failed to process the integration events: {e.Message}", e.Message);
            }
        }
Esempio n. 2
0
        private void RegisterHelperServices(IServiceCollection services)
        {
            services.AddSingleton <IMongoService>(item =>
            {
                string connectionString = configRoot.GetConnectionString("default");
                return(new MongoService(connectionString));
            });

            services.AddSingleton <ISerializer, JsonSerializer>();

            services.AddSingleton <IEmailService>(item =>
            {
                IConfigurationSection emailSettings = configRoot.GetSection("EmailSettings");
                var settings = new EmailSettings
                {
                    Host     = emailSettings["Host"],
                    Port     = int.Parse(emailSettings["Port"]),
                    UserId   = emailSettings["UserId"],
                    Password = emailSettings["Password"]
                };
                return(new EmailService(settings));
            });

            var rabbitMqSettings = new MessageBrokerSettings
            {
                Host     = "127.0.0.1",
                Port     = 5672,
                UserId   = "guest",
                Password = "******"
            };

            services.AddSingleton(rabbitMqSettings);
        }
Esempio n. 3
0
        public static IOptions <MessageBrokerSettings> GetMessageBrokerSettings()
        {
            var config   = ConfigurationSingletonFactory.InstanceConfiguration;
            var settings = new MessageBrokerSettings();

            config.GetSection("MessageBroker").Bind(settings);
            var settingsOptions = Options.Create(settings);

            return(settingsOptions);
        }
Esempio n. 4
0
        private void RegisterHelperServices(IServiceCollection services)
        {
            var rabbitMqSettings = new MessageBrokerSettings
            {
                Host     = "127.0.0.1",
                Port     = 5672,
                UserId   = "guest",
                Password = "******"
            };

            services.AddSingleton(rabbitMqSettings);
            services.AddSingleton <IMongoService>(new MongoService(Configuration.GetConnectionString("Default")));
            services.AddSingleton <ISerializer, JsonSerializer>();
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="IntegrationEventPublisher"/> class.
        /// </summary>
        /// <param name="messageBrokerSettingsOptions">The message broker settings options.</param>
        public IntegrationEventPublisher(IOptions <MessageBrokerSettings> messageBrokerSettingsOptions)
        {
            _messageBrokerSettings = messageBrokerSettingsOptions.Value;

            IConnectionFactory connectionFactory = new ConnectionFactory
            {
                HostName = _messageBrokerSettings.HostName,
                Port     = _messageBrokerSettings.Port,
                UserName = _messageBrokerSettings.UserName,
                Password = _messageBrokerSettings.Password
            };

            _connection = connectionFactory.CreateConnection();

            _channel = _connection.CreateModel();

            _channel.QueueDeclare(_messageBrokerSettings.QueueName, false, false, false);
        }
        public RabbitMqServiceBusTest()
        {
            rabbitMqSettings = new MessageBrokerSettings
            {
                Host     = "127.0.0.1",
                Port     = 5672,
                UserId   = "guest",
                Password = "******"
            };

            var serviceProvider = new Mock <IServiceProvider>();

            serviceProvider.Setup(srv => srv.GetService(typeof(MessageBrokerSettings))).Returns(rabbitMqSettings);
            serviceProvider.Setup(srv => srv.GetService(typeof(ISerializer))).Returns(new JsonSerializer());
            serviceProvider.Setup(item => item.GetService(typeof(IEventHandler <ProductPurchasedEvent>)))
            .Returns(new PurchaseEventHandler());

            rabbitMqServiceBus = new EventBus(serviceProvider.Object);
        }
Esempio n. 7
0
 public MessageBroker(IOptions <MessageBrokerSettings> config, ILogger <MessageBroker> logger)
 {
     _logger   = logger;
     _settings = config.Value;
 }