2015-12-03 7 views
5

Cerco di capire se è possibile creare un webjob di Azure e comportarsi in modo tale da dire una volta ogni 1 minuto e lasciare che sia in grado di essere attivato da una coda. Sono riuscito a fare entrambi i requisiti separati ma non combinati in un unico lavoro.Webjob di Azure; Esecuzione programmata e trigger per coda

So che per attivarli su una coda ho bisogno di usare JobHost e una classe Functions con metodi che catturano il trigger. Ancora questo blocca lo schedulatore e gestisce solo i trigger

Quando ometto il JobHost ... beh, allora il programma funziona perfettamente. Sono abbastanza sicuro che sto chiedendo una contraddizione e ho solo bisogno di fare due lavori separati, ma forse uno di voi ha affrontato lo stesso e riesce a realizzarlo.

risposta

4

Qui non userò Scheduler/Lavori pianificati di Azure, dal momento che stai già utilizzando l'SDK. È possibile utilizzare il nuovo TimerTrigger.

Quello che probabilmente farei è avere due funzioni. La prima funzione è la funzione che utilizza QueueTrigger e l'altra utilizza i nuovi Web TimerTrigger rilasciati in v1.1.0. È possibile visualizzare un esempio in cui faccio qualcosa di simile: https://github.com/christopheranderson/feedbackengine#how-does-it-work

C'è un timer che esegue il polling di un feed RSS e elimina i messaggi in coda, ma posso anche solo eliminare i messaggi di coda da un'altra applicazione o, come ho fatto in il mio scenario, usa un WebHook.

Timer trigger Documenti: https://github.com/Azure/azure-webjobs-sdk-extensions#timertrigger

Esempio:

// Triggers every minute (every time the clock looks like 00:xx:xx) 
public static void CronJob([TimerTrigger("0 * * * * *")] TimerInfo timer, [Queue("Foo")] out string message) 
{ 
    Console.WriteLine("Cron job fired!"); 
    message = "Hello world!"; 
} 

public static void QueueJob([QueueTrigger("Foo")] string message) 
{ 
    Console.WriteLine(message); 
} 
+0

config.UseTimers(); non sembra esistere più – TWilly

+1

Lo fa. Potresti non inserire il pacchetto o aggiungere il riferimento appropriato. Forse un nuovo post con un esempio di codice se non riesci a capirlo? –

+1

Questo è nel pacchetto Microsoft.Azure.WebJobs.Extensions NuGet non i WebJob principali –