The topic of this post is simple:
How can I specify to an Azure Web Job the schedule using application configuration or another location?
Does the web job restart automatically in the moment when I change the time interval?
I decided to write about this, because even if you can find the solution on the internet, you need to invest some time on searching until you find the right documentation related to it (INameResolver).
Short version
A custom INameResolver is defined that based on a key name can read the configuration from any location. In the above example, the value is read from configuration file. Don’t forget to register the name resolver on JobHostConfiguration.
Well done!
More details
We should be aware that each time when the configuration file is change, the entire web application where web job also runs is restarted. This happens because the web job runs in the same application pool with your web application. Changing the application configuration file (web.config) usually triggers a restart of the web application. Be aware of this especially if you plan to update how often the web job runs.
How Azure Web Jobs does run?
When you deploy an Azure Web Job, the system creates automatically a temporary folder where all content related to web job is copied. This is necessary to avoid locking files and resources in the moment when web job runs (you also have a web application that runs in parallel). During the copy action, the configuration files are also copied to the temporary folder.
As for other configuration files in a web application, Azure will monitor the configuration file of web jobs that are in the temp folder. In the moment when you modify it, Azure will detect this action and restart the web job – that will automatically read the new configuration also.
How can I specify to an Azure Web Job the schedule using application configuration or another location?
Does the web job restart automatically in the moment when I change the time interval?
I decided to write about this, because even if you can find the solution on the internet, you need to invest some time on searching until you find the right documentation related to it (INameResolver).
Short version
A custom INameResolver is defined that based on a key name can read the configuration from any location. In the above example, the value is read from configuration file. Don’t forget to register the name resolver on JobHostConfiguration.
namespace WebJob.Schedule
{
class Program
{
static void Main(string[] args)
{
JobHostConfiguration config = new JobHostConfiguration();
config.NameResolver = new MagicResolver();
config.UseTimers();
JobHost host = new JobHost(config);
host.RunAndBlock();
}
private class MagicResolver : INameResolver
{
public string Resolve(string name)
{
string value = ConfigurationManager.AppSettings["MagicSchedule"];
}
}
}
public class Magic
{
public static void ScheduleTimeTrigger([TimerTrigger("%MagicSchedule%")] TimerInfo timer)
{
// Your magic web job task here
}
}
}
Well done!
More details
We should be aware that each time when the configuration file is change, the entire web application where web job also runs is restarted. This happens because the web job runs in the same application pool with your web application. Changing the application configuration file (web.config) usually triggers a restart of the web application. Be aware of this especially if you plan to update how often the web job runs.
How Azure Web Jobs does run?
When you deploy an Azure Web Job, the system creates automatically a temporary folder where all content related to web job is copied. This is necessary to avoid locking files and resources in the moment when web job runs (you also have a web application that runs in parallel). During the copy action, the configuration files are also copied to the temporary folder.
As for other configuration files in a web application, Azure will monitor the configuration file of web jobs that are in the temp folder. In the moment when you modify it, Azure will detect this action and restart the web job – that will automatically read the new configuration also.
Comments
Post a Comment