public static WorkflowOptions UseRabbitMQ(this WorkflowOptions options, RabbitMqConnectionFactory rabbitMqConnectionFactory) { if (options == null) { throw new ArgumentNullException(nameof(options)); } if (rabbitMqConnectionFactory == null) { throw new ArgumentNullException(nameof(rabbitMqConnectionFactory)); } options.Services.AddSingleton(rabbitMqConnectionFactory); options.Services.TryAddSingleton <IRabbitMqQueueNameProvider, DefaultRabbitMqQueueNameProvider>(); options.UseQueueProvider(RabbitMqQueueProviderFactory); return(options); }
/// <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); }
public static WorkflowOptions UseRedisQueues(this WorkflowOptions options, string connectionString, string prefix) { options.UseQueueProvider(sp => new RedisQueueProvider(connectionString, prefix, sp.GetService <ILoggerFactory>())); return(options); }
public static WorkflowOptions UseAzureSynchronization(this WorkflowOptions options, string connectionString) { options.UseQueueProvider(sp => new AzureStorageQueueProvider(connectionString, sp.GetService <ILoggerFactory>())); options.UseDistributedLockManager(sp => new AzureLockManager(connectionString, sp.GetService <ILoggerFactory>())); return(options); }
public static WorkflowOptions UseAwsSimpleQueueService(this WorkflowOptions options, AWSCredentials credentials, AmazonSQSConfig config, string queuesPrefix = "workflowcore") { options.UseQueueProvider(sp => new SQSQueueProvider(credentials, config, sp.GetService <ILoggerFactory>(), queuesPrefix)); return(options); }
public static WorkflowOptions UseRabbitMQ(this WorkflowOptions options, IConnectionFactory connectionFactory) { options.UseQueueProvider(sp => new RabbitMQProvider(connectionFactory)); return(options); }
public static WorkflowOptions UseZeroMQQueuing(this WorkflowOptions options, int port, IEnumerable <string> peers, bool canTakeWork = true) { options.UseQueueProvider(sp => new ZeroMQProvider(port, peers, canTakeWork, sp.GetService <ILoggerFactory>())); return(options); }
public static WorkflowOptions UseActiveMQ(this WorkflowOptions options, IConnectionFactory connectionFactory, string workflowQueueName = "wfc.workflow_queue", string eventQueueName = "wfc.event_queue") { options.UseQueueProvider(sp => new ActiveMQProvider(connectionFactory, workflowQueueName, eventQueueName)); return(options); }