/// <summary>
        /// Creates an initializes a <see cref="IMessageQueueingService"/>
        /// based on the provided <paramref name="configuration"/>
        /// </summary>
        /// <param name="configuration">The journaling configuration
        /// element</param>
        /// <returns>Returns a task whose result is an initialized
        /// <see cref="IMessageQueueingService"/></returns>
        public async Task <IMessageQueueingService> CreateMessageQueueingService(QueueingElement configuration)
        {
            var securityTokenServiceFactory = new SecurityTokenServiceFactory();
            var securitTokenConfig          = configuration.SecurityTokens;
            var securityTokenService        = await securityTokenServiceFactory.InitSecurityTokenService(securitTokenConfig);

            var uri = configuration.GetUri("uri") ?? new Uri("amqp://localhost:5672");

            var encodingName = configuration.GetString("encoding");

            if (string.IsNullOrWhiteSpace(encodingName))
            {
                encodingName = "UTF-8";
            }
            var encoding = ParseEncoding(encodingName);

            var messageEncryptionServiceFactory = new MessageEncryptionServiceFactory();
            var messageEncryptionConfig         = configuration.Encryption;
            var messageEncryptionService        = await messageEncryptionServiceFactory.InitMessageEncryptionService(messageEncryptionConfig);

            var queueingOptions = new RabbitMQMessageQueueingOptions(uri)
            {
                Encoding                 = encoding,
                SecurityTokenService     = securityTokenService,
                MessageEncryptionService = messageEncryptionService
            };

            var messageQueueingService = new RabbitMQMessageQueueingService(queueingOptions);

            return(messageQueueingService);
        }
        /// <summary>
        /// Creates an initializes a <see cref="IMessageQueueingService"/>
        /// based on the provided <paramref name="configuration"/>
        /// </summary>
        /// <param name="configuration">The journaling configuration
        /// element</param>
        /// <returns>Returns a task whose result is an initialized
        /// <see cref="IMessageQueueingService"/></returns>
        public async Task <IMessageQueueingService> CreateMessageQueueingService(IConfiguration configuration)
        {
            var securityTokenServiceFactory = new SecurityTokenServiceFactory();
            var securityTokensSection       = configuration?.GetSection("securityTokens");
            var securityTokenService        = await securityTokenServiceFactory.InitSecurityTokenService(securityTokensSection);

            var defaultUri = new Uri("amqp://localhost:5672");
            var uri        = configuration?.GetValue("uri", defaultUri) ?? defaultUri;

            var encodingName = configuration?["encoding"];

            if (string.IsNullOrWhiteSpace(encodingName))
            {
                encodingName = "UTF-8";
            }
            var encoding = ParseEncoding(encodingName);

            var messageEncryptionServiceFactory = new MessageEncryptionServiceFactory();
            var messageEncryptionConfig         = configuration?.GetSection("encryption");
            var messageEncryptionService        = await messageEncryptionServiceFactory.InitMessageEncryptionService(messageEncryptionConfig);

            var queueingOptions = new RabbitMQMessageQueueingOptions(uri)
            {
                Encoding                 = encoding,
                SecurityTokenService     = securityTokenService,
                MessageEncryptionService = messageEncryptionService
            };

            var messageQueueingService = new RabbitMQMessageQueueingService(queueingOptions);

            return(messageQueueingService);
        }
Пример #3
0
        /// <inheritdoc />
        public async Task <IMessageQueueingService> CreateMessageQueueingService(QueueingElement configuration)
        {
            var securityTokenServiceFactory = new SecurityTokenServiceFactory();
            var securitTokenConfig          = configuration.SecurityTokens;
            var securityTokenService        = await securityTokenServiceFactory.InitSecurityTokenService(securitTokenConfig);

            var path          = configuration.GetString("path");
            var sqliteBaseDir = GetRootedDirectory(path);

            var messageEncryptionServiceFactory = new MessageEncryptionServiceFactory();
            var messageEncryptionConfig         = configuration.Encryption;
            var messageEncryptionService        = await messageEncryptionServiceFactory.InitMessageEncryptionService(messageEncryptionConfig);

            var queueingOptions = new SQLiteMessageQueueingOptions
            {
                BaseDirectory            = sqliteBaseDir,
                SecurityTokenService     = securityTokenService,
                MessageEncryptionService = messageEncryptionService
            };

            var sqliteMessageQueueingService = new SQLiteMessageQueueingService(queueingOptions);

            sqliteMessageQueueingService.Init();
            return(sqliteMessageQueueingService);
        }
Пример #4
0
        /// <inheritdoc />
        public async Task <IMessageQueueingService> CreateMessageQueueingService(IConfiguration configuration)
        {
            var securityTokenServiceFactory = new SecurityTokenServiceFactory();
            var securityTokensSection       = configuration?.GetSection("securityTokens");
            var securityTokenService        = await securityTokenServiceFactory.InitSecurityTokenService(securityTokensSection);

            var path          = configuration?["path"];
            var sqliteBaseDir = GetRootedDirectory(path);

            var messageEncryptionServiceFactory = new MessageEncryptionServiceFactory();
            var messageEncryptionConfig         = configuration?.GetSection("encryption");
            var messageEncryptionService        = await messageEncryptionServiceFactory.InitMessageEncryptionService(messageEncryptionConfig);

            var queueingOptions = new SQLiteMessageQueueingOptions
            {
                BaseDirectory            = sqliteBaseDir,
                SecurityTokenService     = securityTokenService,
                MessageEncryptionService = messageEncryptionService
            };

            var sqliteMessageQueueingService = new SQLiteMessageQueueingService(queueingOptions);

            sqliteMessageQueueingService.Init();
            return(sqliteMessageQueueingService);
        }
        /// <inheritdoc />
        /// <summary>
        /// Initializes the supplied HTTP server <paramref name="platibusConfiguration" /> based on the
        /// properties of the provided <paramref name="configuration" />
        /// </summary>
        /// <param name="platibusConfiguration">The configuration to initialize</param>
        /// <param name="configuration">The configuration section whose properties are to be used
        /// to initialize the <paramref name="platibusConfiguration" /></param>
        /// <returns>Returns a task that completes when the configuration has been initialized</returns>
        public override async Task Initialize(RabbitMQHostConfiguration platibusConfiguration, IConfiguration configuration)
        {
            await base.Initialize(platibusConfiguration, configuration);

            var defaultBaseUri = new Uri(RabbitMQDefaults.BaseUri);

            platibusConfiguration.BaseUri = configuration?.GetValue <Uri>("baseUri") ?? defaultBaseUri;

            var encodingName = configuration?["encoding"] ?? RabbitMQDefaults.Encoding;

            platibusConfiguration.Encoding = string.IsNullOrWhiteSpace(encodingName)
                ? Encoding.UTF8
                : Encoding.GetEncoding(encodingName);

            platibusConfiguration.AutoAcknowledge  = configuration?.GetValue("autoAcknowledge", RabbitMQDefaults.AutoAcknowledge) ?? RabbitMQDefaults.AutoAcknowledge;
            platibusConfiguration.ConcurrencyLimit = configuration?.GetValue("concurrencyLimit", RabbitMQDefaults.ConcurrencyLimit) ?? RabbitMQDefaults.ConcurrencyLimit;
            platibusConfiguration.MaxAttempts      = configuration?.GetValue("maxAttempts", RabbitMQDefaults.MaxAttempts) ?? RabbitMQDefaults.MaxAttempts;

            var defaultRetryDelay = TimeSpan.Parse(RabbitMQDefaults.RetryDelay);

            platibusConfiguration.RetryDelay = configuration?.GetValue("retryDelay", defaultRetryDelay) ?? defaultRetryDelay;
            platibusConfiguration.IsDurable  = configuration?.GetValue("durable", RabbitMQDefaults.Durable) ?? RabbitMQDefaults.Durable;

            var securityTokenServiceFactory = new SecurityTokenServiceFactory(platibusConfiguration.DiagnosticService);
            var securityTokensSection       = configuration?.GetSection("securityTokens");

            platibusConfiguration.SecurityTokenService = await securityTokenServiceFactory.InitSecurityTokenService(securityTokensSection);
        }
Пример #6
0
        /// <inheritdoc />
        public async Task <IMessageQueueingService> CreateMessageQueueingService(QueueingElement configuration)
        {
            var connectionName = configuration.GetString("connectionName");

            if (string.IsNullOrWhiteSpace(connectionName))
            {
                throw new ConfigurationErrorsException(
                          "Attribute 'connectionName' is required for MongoDB message queueing service");
            }

            QueueCollectionNameFactory collectionNameFactory = null;
            var databaseName       = configuration.GetString("database");
            var collectionName     = configuration.GetString("collection");
            var collectionPerQueue = configuration.GetBool("collectionPerQueue") ?? false;

            if (!string.IsNullOrWhiteSpace(collectionName))
            {
                collectionNameFactory = _ => collectionName;
            }
            else if (collectionPerQueue)
            {
                var collectionPrefix = (configuration.GetString("collectionPrefix") ?? "").Trim();
                collectionNameFactory = queueName => (collectionPrefix + queueName).Trim();
            }

            var connectionStringSettings = ConfigurationManager.ConnectionStrings[connectionName];

            if (connectionStringSettings == null)
            {
                throw new ConfigurationErrorsException("Connection string settings \"" + connectionName + "\" not found");
            }

            var securityTokenServiceFactory = new SecurityTokenServiceFactory();
            var securitTokenConfig          = configuration.SecurityTokens;
            var securityTokenService        = await securityTokenServiceFactory.InitSecurityTokenService(securitTokenConfig);

            var messageEncrytionServiceFactory = new MessageEncryptionServiceFactory();
            var encryptionSection        = configuration.Encryption;
            var messageEncryptionService = await messageEncrytionServiceFactory.InitMessageEncryptionService(encryptionSection);

            var database        = MongoDBHelper.Connect(connectionStringSettings, databaseName);
            var queueingOptions = new MongoDBMessageQueueingOptions(database)
            {
                CollectionNameFactory    = collectionNameFactory,
                SecurityTokenService     = securityTokenService,
                MessageEncryptionService = messageEncryptionService
            };

            var messageQueueingService = new MongoDBMessageQueueingService(queueingOptions);

            return(messageQueueingService);
        }
        /// <summary>
        /// Initializes the supplied HTTP server <paramref name="configuration"/> based on the
        /// properties of the provided <paramref name="configSection"/>
        /// </summary>
        /// <param name="configuration">The configuration to initialize</param>
        /// <param name="configSection">The configuration section whose properties are to be used
        /// to initialize the <paramref name="configuration"/></param>
        /// <returns>Returns a task that completes when the configuration has been initialized</returns>
        public async Task Initialize(RabbitMQHostConfiguration configuration,
                                     RabbitMQHostConfigurationSection configSection)
        {
            await base.Initialize(configuration, configSection);

            configuration.BaseUri = configSection.BaseUri ?? new Uri(RabbitMQDefaults.BaseUri);

            configuration.Encoding = string.IsNullOrWhiteSpace(configSection.Encoding)
                ? Encoding.UTF8
                : Encoding.GetEncoding(configSection.Encoding);

            configuration.AutoAcknowledge  = configSection.AutoAcknowledge;
            configuration.ConcurrencyLimit = configSection.ConcurrencyLimit;
            configuration.MaxAttempts      = configSection.MaxAttempts;
            configuration.RetryDelay       = configSection.RetryDelay;
            configuration.IsDurable        = configSection.IsDurable;

            var securityTokenServiceFactory = new SecurityTokenServiceFactory(configuration.DiagnosticService);
            var securityTokenConfig         = configSection.SecurityTokens;

            configuration.SecurityTokenService = await securityTokenServiceFactory.InitSecurityTokenService(securityTokenConfig);
        }
Пример #8
0
        /// <inheritdoc />
        public async Task <IMessageQueueingService> CreateMessageQueueingService(QueueingElement configuration)
        {
            var connectionName = configuration.GetString("connectionName");

            if (string.IsNullOrWhiteSpace(connectionName))
            {
                throw new ConfigurationErrorsException(
                          "Attribute 'connectionName' is required for SQL message queueing service");
            }

            var connectionStringSettings = ConfigurationManager.ConnectionStrings[connectionName];

            if (connectionStringSettings == null)
            {
                throw new ConfigurationErrorsException($"Connection string settings \"{connectionName}\" not found");
            }

            var securityTokenServiceFactory = new SecurityTokenServiceFactory();
            var securityTokenConfig         = configuration.SecurityTokens;
            var securityTokenService        = await securityTokenServiceFactory.InitSecurityTokenService(securityTokenConfig);

            var messageEncryptionServiceFactory = new MessageEncryptionServiceFactory();
            var messageEncryptionConfig         = configuration.Encryption;
            var messageEncryptionService        = await messageEncryptionServiceFactory.InitMessageEncryptionService(messageEncryptionConfig);

            var connectionProvider             = new DefaultConnectionProvider(connectionStringSettings);
            var commandBuildersFactory         = new CommandBuildersFactory(connectionStringSettings);
            var messageQueueingCommandBuilders = commandBuildersFactory.InitMessageQueueingCommandBuilders();
            var messageQueueingOptions         = new SQLMessageQueueingOptions(connectionProvider, messageQueueingCommandBuilders)
            {
                SecurityTokenService     = securityTokenService,
                MessageEncryptionService = messageEncryptionService
            };
            var sqlMessageQueueingService = new SQLMessageQueueingService(messageQueueingOptions);

            sqlMessageQueueingService.Init();
            return(sqlMessageQueueingService);
        }
        /// <inheritdoc />
        /// <summary>
        /// Creates an initializes a <see cref="T:Platibus.IMessageQueueingService" />
        /// based on the provided <paramref name="configuration" />
        /// </summary>
        /// <param name="configuration">The journaling configuration
        ///     element</param>
        /// <returns>Returns a task whose result is an initialized
        /// <see cref="T:Platibus.IMessageQueueingService" /></returns>
        public async Task <IMessageQueueingService> CreateMessageQueueingService(IConfiguration configuration)
        {
            var path = configuration?["path"];

            var securityTokenServiceFactory = new SecurityTokenServiceFactory();
            var securityTokenConfig         = configuration?.GetSection("securityTokens");
            var securityTokenService        = await securityTokenServiceFactory.InitSecurityTokenService(securityTokenConfig);

            var messageEncryptionServiceFactory = new MessageEncryptionServiceFactory();
            var messageEncryptionConfig         = configuration?.GetSection("encryption");
            var messageEncryptionService        = await messageEncryptionServiceFactory.InitMessageEncryptionService(messageEncryptionConfig);

            var fsQueueingOptions = new FilesystemMessageQueueingOptions()
            {
                BaseDirectory            = GetRootedDirectory(path),
                SecurityTokenService     = securityTokenService,
                MessageEncryptionService = messageEncryptionService
            };

            var fsQueueingService = new FilesystemMessageQueueingService(fsQueueingOptions);

            fsQueueingService.Init();
            return(fsQueueingService);
        }
        public static Task <ISecurityTokenService> InitSecurityTokenService(SecurityTokensElement config)
        {
            var factory = new SecurityTokenServiceFactory();

            return(factory.InitSecurityTokenService(config));
        }