J'ai un site Web MVC, une file d'attente de stockage et un WebJob. Les utilisateurs peuvent demander la génération d'un ensemble de rapports en cliquant sur un bouton de la page Web. Cela insère un message dans la file d'attente de stockage. Dans le passé, WebJob fonctionnait continuellement et traitait ces requêtes correctement. Mais la demande et la taille des rapports ont augmenté au point où WebJob ralentit l'application Web. Je voudrais encore placer le message de demande dans la file d'attente, mais retarder le traitement de toutes les demandes jusqu'au soir, quand l'application Web est la plupart du temps inactive. Cela me permettrait de continuer à utiliser le code WebJob et la fonctionnalité QueueTrigger sans avoir à gaspiller de ressources en passant à un rôle de travailleur dédié, etc. Les rapports n'ont pas besoin d'être générés immédiatement, donc un délai est acceptable.Azure WebJob - Limite du temps de traitement à des heures spécifiques
Je ne vois pas de façon intégrée de définir une fenêtre de temps lors du traitement. La seule chose que j'ai trouvée est une cmdlet powershell pour démarrer et arrêter WebJobs (Start-AzureWebsiteJob/Stop-AzureWebsiteJob). Donc je pensais que je pourrais créer un travail PowerShell programmé qui s'exécute à minuit, démarre le webjob, le laisse fonctionner, puis s'exécute de nouveau tôt le matin et l'arrête.
Est-ce que quelqu'un connaît une meilleure option que celle-ci? Quelque chose de plus "officiel" que peut-être je ne pouvais pas trouver?
J'ai complètement oublié initialVisibilityDelay. Je devrais ajouter un nouveau wrapper AddMessage par rapport à ce que nous utilisons maintenant, mais je pense que cela fonctionnerait. Tant que la file d'attente n'est pas trop grande, elle ne sera pas traitée en une nuit ... car cette solution n'a pas d'option "shut off". Merci. –