/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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)); }