public SchedulerBusObserver(IHangfireComponentResolver hangfireComponentResolver, Uri schedulerEndpointAddress,
                             Action <BackgroundJobServerOptions> configureServer)
 {
     _hangfireComponentResolver = hangfireComponentResolver;
     _schedulerEndpointAddress  = schedulerEndpointAddress;
     _configureServer           = configureServer;
 }
Example #2
0
 public BusRegistrationContextComponentResolver(IConfigurationServiceProvider provider, IHangfireComponentResolver resolver)
 {
     _backgroundJobClient = new Lazy <IBackgroundJobClient>(() => provider.GetService <IBackgroundJobClient>() ?? resolver.BackgroundJobClient);
     _recurringJobManager = new Lazy <IRecurringJobManager>(() => provider.GetService <IRecurringJobManager>() ?? resolver.RecurringJobManager);
     _timeZoneResolver    = new Lazy <ITimeZoneResolver>(() => provider.GetService <ITimeZoneResolver>() ?? resolver.TimeZoneResolver);
     _jobFilterProvider   = new Lazy <IJobFilterProvider>(() => provider.GetService <IJobFilterProvider>() ?? resolver.JobFilterProvider);
     _backgroundProcesses =
         new Lazy <IEnumerable <IBackgroundProcess> >(() => provider.GetService <IEnumerable <IBackgroundProcess> >() ?? resolver.BackgroundProcesses);
     _jobStorage = new Lazy <JobStorage>(() => provider.GetService <JobStorage>() ?? resolver.JobStorage);
 }
Example #3
0
        public static void UseHangfireScheduler(this IBusFactoryConfigurator configurator, IHangfireComponentResolver hangfireComponentResolver,
                                                string queueName = "hangfire",
                                                Action <BackgroundJobServerOptions> configureServer = null)
        {
            if (configurator == null)
            {
                throw new ArgumentNullException(nameof(configurator));
            }
            if (hangfireComponentResolver == null)
            {
                throw new ArgumentNullException(nameof(hangfireComponentResolver));
            }

            configurator.ReceiveEndpoint(queueName, e =>
            {
                var partitioner = configurator.CreatePartitioner(Environment.ProcessorCount);

                e.Consumer(() => new ScheduleMessageConsumer(hangfireComponentResolver), x =>
                {
                    x.Message <ScheduleMessage>(m => m.UsePartitioner(partitioner, p => p.Message.CorrelationId));
                    x.Message <CancelScheduledMessage>(m => m.UsePartitioner(partitioner, p => p.Message.TokenId));
                });
                e.Consumer(() => new ScheduleRecurringMessageConsumer(hangfireComponentResolver));

                var observer = new SchedulerBusObserver(hangfireComponentResolver, e.InputAddress, configureServer);
                configurator.ConnectBusObserver(observer);

                configurator.UseMessageScheduler(e.InputAddress);
            });
        }
 public ScheduleMessageConsumer(IHangfireComponentResolver hangfireComponentResolver)
     : this(hangfireComponentResolver.BackgroundJobClient, hangfireComponentResolver.JobStorage)
 {
 }
 public ScheduleRecurringMessageConsumer(IHangfireComponentResolver hangfireComponentResolver)
     : this(hangfireComponentResolver.RecurringJobManager, hangfireComponentResolver.TimeZoneResolver)
 {
 }