Je développe un webjob Azure qui devrait fonctionner en continu. J'ai une fonction statique publique. Je veux que cette fonction soit déclenchée automatiquement sans file d'attente. En ce moment, j'utilise while (true) pour fonctionner en continu. Y a-t-un autre moyen de faire ça?
Veuillez trouver ci-dessous mon code
static void Main()
{
var Host = new JobHost();
Host.Call(typeof(Functions).GetMethod("ProcessMethod"));
// The following code ensures that the WebJob will be running continuously
Host.RunAndBlock();
}
[NoAutomaticTriggerAttribute]
public static void ProcessMethod(TextWriter log)
{
while (true)
{
try
{
log.WriteLine("There are {0} pending requests", pendings.Count);
}
catch (Exception ex)
{
log.WriteLine("Error occurred in processing pending altapay requests. Error : {0}", ex.Message);
}
Thread.Sleep(TimeSpan.FromMinutes(3));
}
}
Merci
Ces étapes vous amèneront à ce que vous voulez:
J'ai converti votre code pour refléter les étapes ci-dessous.
static void Main()
{
var Host = new JobHost();
Host.CallAsync(typeof(Functions).GetMethod("ProcessMethod"));
// The following code ensures that the WebJob will be running continuously
Host.RunAndBlock();
}
[NoAutomaticTriggerAttribute]
public static async Task ProcessMethod(TextWriter log)
{
while (true)
{
try
{
log.WriteLine("There are {0} pending requests", pendings.Count);
}
catch (Exception ex)
{
log.WriteLine("Error occurred in processing pending altapay requests. Error : {0}", ex.Message);
}
await Task.Delay(TimeSpan.FromMinutes(3));
}
}
Utilisez Microsoft.Azure.WebJobs.Extensions.Timers, voir https://github.com/Azure/azure-webjobs-sdk-extensions/blob/master/src/ExtensionsSample/Samples/TimerSamples.cs = pour créer un déclencheur qui utilise une instruction TimeSpan ou Crontab pour déclencher la méthode.
Ajoutez Microsoft.Azure.WebJobs.Extensions.Timers de NuGet à votre projet.
public static void ProcessMethod(TextWriter log)
devient
public static void ProcessMethod([TimerTrigger("00:05:00",RunOnStartup = true)] TimerInfo timerInfo, TextWriter log)
pour les déclencheurs de cinq minutes (en utilisant la chaîne TimeSpan)
Vous devrez vous assurer que votre Program.cs Main configure la configuration pour utiliser les minuteries comme suit:
static void Main()
{
JobHostConfiguration config = new JobHostConfiguration();
config.UseTimers();
var Host = new JobHost(config);
// The following code ensures that the WebJob will be running continuously
Host.RunAndBlock();
}