static List <object> ConfigureRabbitMqConsumers() { //Redis ConnectionMultiplexer redisMultiplexer = InitRedis(); var rabbitMqConn = ConfigureRabbitMqConn(); // Factory method for token revoked event consumer. Func <TokenRevokedEventRabbitMqConsumer> tokenRevokedEventRabbitMqConsumerFactoryMethod = () => { var revokedTokensRedisCollectionConfigs = new RedisCollectionConfig(_configs.GetSection("redis").GetSection("revokedTokensCollection")); var revokedTokenRepo = new RedisCachedRepo <string>(redisMultiplexer.GetDatabase(), revokedTokensRedisCollectionConfigs.CollectionName, new DefaultSerializer(), _logger); var queueConfig = new RabbitMqQueueConfig(_configs.GetSection("rabbitMq").GetSection("refreshTokenRevokedEventQueue")); TokenRevokedEventRabbitMqConsumer consumer = new TokenRevokedEventRabbitMqConsumer(revokedTokenRepo, rabbitMqConn, queueConfig, _logger); return(consumer); }; // Factory method for token invalidated event consumer. Func <TokenInvalidatedEventRabbitMqConsumer> tokenInvalidatedEventRabbitMqConsumerFactoryMethod = () => { var revokedTokensRedisCollectionConfigs = new RedisCollectionConfig(_configs.GetSection("redis").GetSection("invalidatedTokensCollection")); var invalidatedTokenRepo = new RedisCachedRepo <string>(redisMultiplexer.GetDatabase(), revokedTokensRedisCollectionConfigs.CollectionName, new DefaultSerializer(), _logger); var queueConfig = new RabbitMqQueueConfig(_configs.GetSection("rabbitMq").GetSection("refreshTokenInvalidatedEventQueue")); TokenInvalidatedEventRabbitMqConsumer consumer = new TokenInvalidatedEventRabbitMqConsumer(invalidatedTokenRepo, rabbitMqConn, queueConfig, _logger); return(consumer); }; return(new List <object>() { tokenRevokedEventRabbitMqConsumerFactoryMethod(), tokenInvalidatedEventRabbitMqConsumerFactoryMethod() }); }
private static List <object> ConfigureRabbitMqConsumers() { var mongoDb = InitMongoDb(); var redisMultiplexer = InitRedis(); var rabbitMqConn = InitRabbitMqConn(); //Factory method for creating PasswordChangedEventRabbitMqConsumer. Func <PasswordChangedEventRabbitMqConsumer> passwordChangedEventRabbitMqConsumerFactoryMethod = () => { // Create command for the consumer. IMongoCollection <AccountRTokenInfo> rtokensRepo = mongoDb.GetCollection <AccountRTokenInfo>(_accountTokenMongoCollectionName); var revokedTokensRedisDbPrefix = new RedisCollectionConfig(_configs.GetSection("redis").GetSection("revokedTokensCollection")).CollectionName; RedisCachedRepo <string> revokedTokensRedisRepo = new RedisCachedRepo <string>(redisMultiplexer.GetDatabase(), revokedTokensRedisDbPrefix, new DefaultSerializer(), _logger); var command = new RevokeAllTokensForAccountCommand(rtokensRepo, _logger); // Add event subscribers to the command. var refreshTokenRevokedEventExchangeConfig = new RabbitMqExchangeConfigs(_configs.GetSection("rabbitMq").GetSection("refreshTokenRevokedEventExchange")); command.AddSubsciber(new RabbitMqEventPublisher <RefreshTokenRevokedEvent>( new RabbitMqProducer <RefreshTokenRevokedEvent>(rabbitMqConn, refreshTokenRevokedEventExchangeConfig, _logger), _logger)); command.AddSubsciber(new RevokedTokenRedisCacher(revokedTokensRedisRepo, _logger)); // Create consumer and return it. var userClaimsChangedEventQueueConfig = new RabbitMqQueueConfig(_configs.GetSection("rabbitMq").GetSection("passwordChangedEventQueue")); PasswordChangedEventRabbitMqConsumer consumer = new PasswordChangedEventRabbitMqConsumer(command, rabbitMqConn, userClaimsChangedEventQueueConfig, _logger); return(consumer); }; //Factory method for creating UserRolesChangedEventRabbitMqConsumer. Func <UserRolesChangedEventRabbitMqConsumer> userRolesChangedEventRabbitMqConsumerFactoryMethod = () => { // Create command for the consumer. IMongoCollection <AccountRTokenInfo> rtokensRepo = mongoDb.GetCollection <AccountRTokenInfo>(_accountTokenMongoCollectionName); var invalidatedTokensRedisDbPrefix = new RedisCollectionConfig(_configs.GetSection("redis").GetSection("invalidatedTokensCollection")).CollectionName; RedisCachedRepo <string> invalidatedTokensRedisRepo = new RedisCachedRepo <string>(redisMultiplexer.GetDatabase(), invalidatedTokensRedisDbPrefix, new DefaultSerializer(), _logger); var command = new InvalidateAllTokensForAccountCommand(rtokensRepo, _logger); // Add event subscribers to the command. var refreshTokenInvalidatedEventExchangeConfigs = new RabbitMqExchangeConfigs(_configs.GetSection("rabbitMq").GetSection("refreshTokenInvalidatedEventExchange")); command.AddSubsciber(new RabbitMqEventPublisher <RefreshTokenRevokedEvent>( new RabbitMqProducer <RefreshTokenRevokedEvent>(rabbitMqConn, refreshTokenInvalidatedEventExchangeConfigs, _logger), _logger)); command.AddSubsciber(new InvalidatedTokenRedisCacher(invalidatedTokensRedisRepo, _logger)); // Create consumer and return it. var userClaimsChangedEventQueueConfig = new RabbitMqQueueConfig(_configs.GetSection("rabbitMq").GetSection("userRolesChangedEventQueue")); UserRolesChangedEventRabbitMqConsumer consumer = new UserRolesChangedEventRabbitMqConsumer(command, rabbitMqConn, userClaimsChangedEventQueueConfig, _logger); return(consumer); }; // Create and return RabbitMq consumers list. var rabbitMqConsumers = new List <object>() { passwordChangedEventRabbitMqConsumerFactoryMethod(), userRolesChangedEventRabbitMqConsumerFactoryMethod() }; return(rabbitMqConsumers); }
public UserRolesChangedEventRabbitMqConsumer(IInvalidateAllTokensForAccountCommand invalidateAllTokensForAccountCommand, IConnection rabbitMqConn, RabbitMqQueueConfig queueConfig, ILogger logger) : base(rabbitMqConn, queueConfig, logger) { _invalidateAllTokensForAccountCommand = invalidateAllTokensForAccountCommand; }
public TokenRevokedEventRabbitMqConsumer(ICachedRepo <string> revokedTokenRepo, IConnection rabbitMqConn, RabbitMqQueueConfig queueConfig, ILogger logger) : base(rabbitMqConn, queueConfig, logger) { _revokedTokenRepo = revokedTokenRepo; }
public PasswordChangedEventRabbitMqConsumer(IRevokeAllTokensForAccountCommand revokeAllTokensForAccountCommand, IConnection rabbitMqConn, RabbitMqQueueConfig queueConfig, ILogger logger) : base(rabbitMqConn, queueConfig, logger) { _revokeAllTokensForAccountCommand = revokeAllTokensForAccountCommand; }
public TokenInvalidatedEventRabbitMqConsumer(ICachedRepo <string> invalidatedTokenRepo, IConnection rabbitMqConn, RabbitMqQueueConfig queueConfig, ILogger logger) : base(rabbitMqConn, queueConfig, logger) { _invalidatedTokenRepo = invalidatedTokenRepo; }
public MailSenderRabbitMqConsumer(IMailModelFactory <TModel> mailModelFactory, IMailSender mailSender, IConnection rabbitMqConn, RabbitMqQueueConfig queueConfig, ILogger logger) : base(rabbitMqConn, queueConfig, logger) { _mailModelFactory = mailModelFactory; _mailSender = mailSender; _logger = logger; }
private static List <Object> ConfigureRabbitMqConsumers() { var smtpConfig = new SmtpConfig(_configs.GetSection("smtp")); var templateFileForConfirmMail = _configs["templateFileForConfirmMail"]; var templateFileForDirectPassRecovery = _configs["templateFileForDirectPassRecovery"]; var templateFileForResetLinkPassRecovery = _configs["templateFileForResetLinkPassRecovery"]; var templateFileForUserClaimsChangedEvent = _configs["templateFileForUserClaimsChangedEvent"]; var templateFileForPasswordChangedEvent = _configs["templateFileForPasswordChangedEvent"]; var templateFileForAccountEmailChangedEvent = _configs["templateFileForAccountEmailChangedEvent"]; var templateFileForAccountEmailChangeUndoEvent = _configs["templateFileForAccountEmailChangeUndoEvent"]; var rabbitMqConnection = ConfigureRabbitMqConn(); Func <MailSenderRabbitMqConsumer <ConfirmMailModel> > confirmMailModelConsumerFactory = () => { SmtpClient smtpClient = ConfigureSmtpClient(smtpConfig); var queueConfig = new RabbitMqQueueConfig(_configs.GetSection("rabbitMq").GetSection("confirmMailQueue")); MailSenderRabbitMqConsumer <ConfirmMailModel> consumer = new MailSenderRabbitMqConsumer <ConfirmMailModel>( new ConfirmMailModelMailModelFactory(smtpConfig, templateFileForConfirmMail), new SmtpMailSender(smtpClient, _logger), rabbitMqConnection, queueConfig, _logger); return(consumer); }; // DirectPassRecoveryMailModel consumer factory. Func <MailSenderRabbitMqConsumer <DirectPassRecoveryMailModel> > directPassRecoveryModelConsumerFactory = () => { SmtpClient smtpClient = ConfigureSmtpClient(smtpConfig); var queueConfig = new RabbitMqQueueConfig(_configs.GetSection("rabbitMq").GetSection("directPassRecoveryMailQueue")); return(new MailSenderRabbitMqConsumer <DirectPassRecoveryMailModel>( new DirectPassRecoveryMailModelFactory(smtpConfig, templateFileForDirectPassRecovery), new SmtpMailSender(smtpClient, _logger), rabbitMqConnection, queueConfig, _logger)); }; // ResetLinkPasswordRecoveryMailModel consumer factory. Func <MailSenderRabbitMqConsumer <ResetLinkPasswordRecoveryMailModel> > resetLinkPasswordRecoveryModelConsumerFactory = () => { SmtpClient smtpClient = ConfigureSmtpClient(smtpConfig); var queueConfig = new RabbitMqQueueConfig(_configs.GetSection("rabbitMq").GetSection("resetLinkPasswordRecoveryMailQueue")); return(new MailSenderRabbitMqConsumer <ResetLinkPasswordRecoveryMailModel>( new ResetLinkPasswordRecoveryMailModelFactory(smtpConfig, templateFileForResetLinkPassRecovery), new SmtpMailSender(smtpClient, _logger), rabbitMqConnection, queueConfig, _logger)); }; // UserClaimsChangedEvent consumer factory. Func <MailSenderRabbitMqConsumer <UserClaimsChangedEvent> > userClaimsChangedEventConsumerFactory = () => { SmtpClient smtpClient = ConfigureSmtpClient(smtpConfig); var queueConfig = new RabbitMqQueueConfig(_configs.GetSection("rabbitMq").GetSection("userClaimsChangedEventQueue")); return(new MailSenderRabbitMqConsumer <UserClaimsChangedEvent>( new UserClaimsChangedEventModelFactory(smtpConfig, templateFileForUserClaimsChangedEvent), new SmtpMailSender(smtpClient, _logger), rabbitMqConnection, queueConfig, _logger)); }; // PasswordChangedEvent consumer factory. Func <MailSenderRabbitMqConsumer <PasswordChangedEvent> > passwordChangedEventConsumerFactory = () => { SmtpClient smtpClient = ConfigureSmtpClient(smtpConfig); var queueConfig = new RabbitMqQueueConfig(_configs.GetSection("rabbitMq").GetSection("passwordChangedEventQueue")); return(new MailSenderRabbitMqConsumer <PasswordChangedEvent>( new PasswordChangedEventModelFactory(smtpConfig, templateFileForPasswordChangedEvent), new SmtpMailSender(smtpClient, _logger), rabbitMqConnection, queueConfig, _logger)); }; // AccountEmailChangedEvent consumer factory. Func <MailSenderRabbitMqConsumer <AccountEmailChangedEvent> > accountEmailChangedEventConsumerFactory = () => { SmtpClient smtpClient = ConfigureSmtpClient(smtpConfig); var queueConfig = new RabbitMqQueueConfig(_configs.GetSection("rabbitMq").GetSection("accountEmailChangedEventQueue")); return(new MailSenderRabbitMqConsumer <AccountEmailChangedEvent>( new AccountEmailChangedEventMailModelFactory(smtpConfig, templateFileForAccountEmailChangedEvent, "https://example.com/api/v1/account/emailChange"), new SmtpMailSender(smtpClient, _logger), rabbitMqConnection, queueConfig, _logger)); }; // AccountEmailChangedEvent consumer factory. Func <MailSenderRabbitMqConsumer <AccountEmailChangeUndoEvent> > accountEmailChangeUndoEventConsumerFactory = () => { SmtpClient smtpClient = ConfigureSmtpClient(smtpConfig); var queueConfig = new RabbitMqQueueConfig(_configs.GetSection("rabbitMq").GetSection("accountEmailChangeUndoEventQueue")); return(new MailSenderRabbitMqConsumer <AccountEmailChangeUndoEvent>( new AccountEmailChangeUndoEventMailModelFactory(smtpConfig, templateFileForAccountEmailChangeUndoEvent), new SmtpMailSender(smtpClient, _logger), rabbitMqConnection, queueConfig, _logger)); }; return(new List <object>() { confirmMailModelConsumerFactory(), directPassRecoveryModelConsumerFactory(), resetLinkPasswordRecoveryModelConsumerFactory(), userClaimsChangedEventConsumerFactory(), passwordChangedEventConsumerFactory(), accountEmailChangedEventConsumerFactory(), accountEmailChangeUndoEventConsumerFactory() }); }