コード例 #1
0
        public static IAppBuilder UseHangfireHttpJobAgent(this IAppBuilder app, IServiceCollection services,
                                                          Action <JobAgentOptionsConfigurer> configureOptions = null)
#endif

        {
#if NETCORE
            var sp = app.ApplicationServices;
#else
            var sp         = services.BuildServiceProvider();//OWIN
            var configRoot = sp.GetRequiredService <IConfiguration>();
            services.Configure <JobAgentOptions>(configRoot.GetSection("JobAgent"));
            sp = services.BuildServiceProvider();//OWIN
#endif
            var evt           = new EventId(1, "Hangfire.HttpJob.Agent");
            var loggerFactory = sp.GetService <ILoggerFactory>();
            var logger        = loggerFactory.CreateLogger <JobAgentMiddleware>();
            var options       = sp.GetService <IOptions <JobAgentOptions> >();
            var configurer    = new JobAgentOptionsConfigurer(options.Value);
            try
            {
                configureOptions?.Invoke(configurer);
            }
            catch (Exception exception)
            {
                logger.LogCritical(evt, exception, "Failed to configure JobAgent middleware");
            }

            if (options.Value.Enabled)
            {
                if (string.IsNullOrEmpty(options.Value.SitemapUrl))
                {
                    options.Value.SitemapUrl = "/jobagent";
                }
                logger.LogInformation(evt, "【HttpJobAgent】 - Registered HttpJobAgent middleware to respond to {path}", new { path = options.Value.SitemapUrl });
#if NETCORE
                app.Map(options.Value.SitemapUrl, robotsApp =>
                {
                    robotsApp.UseMiddleware <JobAgentMiddleware>();
                });
#else
                app.Map(options.Value.SitemapUrl, robotsApp =>
                {
                    robotsApp.Use <JobAgentMiddleware>(logger, options, loggerFactory, sp);
                });

                var hostService = sp.GetRequiredService <IHostedService>();
                hostService.StartAsync(new CancellationToken()).ConfigureAwait(false).GetAwaiter().GetResult();
#endif


                foreach (KeyValuePair <Type, JobMetaData> jobAgent in JobAgentServiceConfigurer.JobAgentDic)
                {
                    logger.LogInformation(evt, $"【HttpJobAgent】 - [{jobAgent.Key.Name}] [Transient:{jobAgent.Value.Transien}] [HangJob:{jobAgent.Value.Hang}] - Registered");
                }
            }
            return(app);
        }
コード例 #2
0
        public static IApplicationBuilder UseHangfireHttpJobAgent(this IApplicationBuilder app,
                                                                  Action <JobAgentOptionsConfigurer> configureOptions = null)
        {
            var evt           = new EventId(1, "Hangfire.HttpJob.Agent");
            var loggerFactory = app.ApplicationServices.GetService <ILoggerFactory>();
            var logger        = loggerFactory.CreateLogger <JobAgentMiddleware>();
            var options       = app.ApplicationServices.GetService <IOptions <JobAgentOptions> >();
            var configurer    = new JobAgentOptionsConfigurer(options.Value);

            try
            {
                configureOptions?.Invoke(configurer);
            }
            catch (Exception exception)
            {
                logger.LogCritical(evt, exception, "Failed to configure JobAgent middleware");
            }

            if (options.Value.Enabled)
            {
                if (string.IsNullOrEmpty(options.Value.SitemapUrl))
                {
                    options.Value.SitemapUrl = "/jobagent";
                }
                logger.LogInformation(evt, "【HttpJobAgent】 - Registered HttpJobAgent middleware to respond to {path}", new { path = options.Value.SitemapUrl });
                app.Map(options.Value.SitemapUrl, robotsApp =>
                {
                    robotsApp.UseMiddleware <JobAgentMiddleware>();
                });

                foreach (KeyValuePair <Type, JobMetaData> jobAgent in JobAgentServiceConfigurer.JobAgentDic)
                {
                    logger.LogInformation(evt, $"【HttpJobAgent】 - [{jobAgent.Key.Name}] [Transient:{jobAgent.Value.Transien}] [HangJob:{jobAgent.Value.Hang}] - Registered");
                }
            }
            return(app);
        }