public SqlServerQueueProvider(SqlServerQueueProviderOptions opt, IQueueConfigProvider names, ISqlServerQueueProviderMigrator migrator, ISqlCommandExecutor sqlCommandExecutor) { _config = names; _migrator = migrator; _sqlCommandExecutor = sqlCommandExecutor; _connectionString = opt.ConnectionString; _canMigrateDb = opt.CanMigrateDb; _canCreateDb = opt.CanCreateDb; IsDequeueBlocking = true; _queueWorkCommand = GetFromResource("QueueWork"); _dequeueWorkCommand = GetFromResource("DequeueWork"); }
/// <summary> /// Use SQL Server as a queue provider /// </summary> /// <param name="options"></param> /// <param name="connectionString"></param> /// <returns></returns> public static WorkflowOptions UseSqlServerBroker(this WorkflowOptions options, string connectionString, bool canCreateDb, bool canMigrateDb) { options.Services.AddTransient <IQueueConfigProvider, QueueConfigProvider>(); options.Services.AddTransient <ISqlCommandExecutor, SqlCommandExecutor>(); options.Services.AddTransient <ISqlServerQueueProviderMigrator>(sp => new SqlServerQueueProviderMigrator(connectionString, sp.GetService <IQueueConfigProvider>(), sp.GetService <ISqlCommandExecutor>())); var sqlOptions = new SqlServerQueueProviderOptions() { ConnectionString = connectionString, CanCreateDb = canCreateDb, CanMigrateDb = canMigrateDb }; options.UseQueueProvider(sp => { return(new SqlServerQueueProvider(sqlOptions, sp.GetService <IQueueConfigProvider>(), sp.GetService <ISqlServerQueueProviderMigrator>(), sp.GetService <ISqlCommandExecutor>())); }); return(options); }