Hangfire получает только задания с определенным атрибутом

#.net #attributes #hangfire

Вопрос:

У меня есть Hangfire консольное приложение на C# ( .NET 5.0 ). Это конфигурация:

 var serviceProvider = new ServiceCollection()
           .AddLogging()
           .AddSingleton<ITask1BL, Task1BL>()
           .BuildServiceProvider();

            GlobalConfiguration.Configuration
                .SetDataCompatibilityLevel(CompatibilityLevel.Version_170)
                .UseColouredConsoleLogProvider()
                .UseSimpleAssemblyNameTypeSerializer()
                .UseRecommendedSerializerSettings()
                .UseActivator(new ContainerJobActivator(serviceProvider))
                .UseFilter(new HFJobFilterAttribute("me"))
                .UseSqlServerStorage("Server=MM\SQLEXPRESS;Database=HangfireTest;Trusted_Connection=True;", new SqlServerStorageOptions
                {
                    CommandBatchMaxTimeout = TimeSpan.FromMinutes(5),
                    SlidingInvisibilityTimeout = TimeSpan.FromMinutes(5),
                    QueuePollInterval = TimeSpan.Zero,
                    UseRecommendedIsolationLevel = true,
                    UsePageLocksOnDequeue = true,
                    DisableGlobalLocks = true
                });

            //  BackgroundJob.Enqueue<ITask1BL>(x => x.SendMessage());
            RecurringJob.RemoveIfExists("sendMessageTest1");
            RecurringJob.AddOrUpdate<ITask1BL>("sendMessageTest1", x => x.SendMessage(), Cron.Minutely);

            RecurringJob.RemoveIfExists("receiveMessageTest1");
            RecurringJob.AddOrUpdate<ITask1BL>("receiveMessageTest1", x => x.ReceiveMessage(), Cron.Minutely);

            using (var server = new BackgroundJobServer())
            {
                Console.ReadLine();
            }
 

Это мой атрибут:

 public class HFJobFilterAttribute : JobFilterAttribute, IClientFilter, IServerFilter, IElectStateFilter, IApplyStateFilter
    {
        private readonly string userName;

        public HFJobFilterAttribute(string userName):base()
        {
            this.userName = userName;
        }

        public void OnCreating(CreatingContext context)
        {
...
 

И мои задания, одно с атрибутом, второе без атрибута:

 public class Task1BL : ITask1BL
    {
        [HFJobFilter("me")]
        public int SendMessage()
        {
           ...
        }

        public int ReceiveMessage()
        {
           ..
 

Я хотел добавить задания Hangfire , но когда я запускаю сервер с фильтром, я хотел запускать только задания с заданным атрибутом. Не на всех работах. Теперь, несмотря на то, что я добавил UseFilter , каждая работа выполнена.