public static void RegisterTaskAttibutes(this TaskServiceOptions options, Assembly assembly) { assembly.GetTypes() .SelectMany(t => t.GetMethods()) .Select(m => new { method = m, attribute = m.GetCustomAttribute <QueuedTaskAttribute>() }) .Where(entry => entry.attribute != null) .ToList() .ForEach(entry => { var taskName = entry.attribute.Name ?? entry.method.GetDefaultTaskNameForMethod(); var queueName = entry.attribute.Queue ?? options.DefaultQueueName; options.Tasks.Add(new TaskDefinition(taskName, entry.method, queueName)); }); }
public TaskService( ILogger <TaskService> logger, IServiceProvider serviceProvider, IOptions <QueueTServiceOptions> appOptions, IOptions <TaskServiceOptions> taskOptions, ITaskRegistry taskRegistry, IMessageDispatcher messageDispatcher) { _logger = logger; _serviceProvider = serviceProvider; _appOptions = appOptions.Value; _taskOptions = taskOptions.Value; Registry = taskRegistry; _messageDispatcher = messageDispatcher; }