/// <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); }
/// <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(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); }
public FilesystemServicesProviderMessageQueueingServiceTests(FilesystemFixture fixture) { #if NETCOREAPP2_0 Configuration = new ConfigurationBuilder() .AddInMemoryCollection() .Build(); #endif Path = fixture.BaseDirectory; Message = new Message(new MessageHeaders { MessageId = MessageId.Generate() }, "FilesystemServicesProviderMessageQueueingTests"); }
/// <summary> /// Initializes a message queueing service based on the supplied /// <paramref name="configuration"/> /// </summary> /// <param name="configuration">The message queue configuration</param> /// <returns>Returns a task whose result is the initialized message queueing service</returns> public async Task <IMessageQueueingService> InitMessageQueueingService(QueueingElement configuration) { var myConfig = configuration ?? new QueueingElement(); var provider = await GetProvider(myConfig.Provider); var messageQueueingService = await provider.CreateMessageQueueingService(myConfig); await _diagnosticService.EmitAsync( new DiagnosticEventBuilder(this, DiagnosticEventType.ComponentInitialization) { Detail = $"Message queueing service {messageQueueingService.GetType().FullName} initialized" }.Build()); return(messageQueueingService); }
public MongoDBServicesProviderMessageQueueingServiceTests(MongoDBFixture fixture) { #if NETCOREAPP2_0 Configuration = new ConfigurationBuilder() .AddInMemoryCollection() .Build(); #endif ConnectionStringSettings = fixture.ConnectionStringSettings; #if NET452 Configuration.SetAttribute("connectionName", fixture.ConnectionStringSettings.Name); #endif #if NETCOREAPP2_0 Configuration["connectionName"] = fixture.ConnectionStringSettings.Name; #endif Message = new Message(new MessageHeaders { MessageId = MessageId.Generate() }, "MongoDBServicesProviderMessageQueueingServiceTests"); }
/// <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); }
/// <summary> /// Returns an in-memory message queueing service /// </summary> /// <param name="configuration">The queueing configuration element</param> /// <returns>Returns an in-memory message queueing service</returns> public Task <IMessageQueueingService> CreateMessageQueueingService(QueueingElement configuration) { return(Task.FromResult <IMessageQueueingService>(new InMemoryMessageQueueingService())); }