Quantcast
Channel: Code Inside Blog
Viewing all articles
Browse latest Browse all 358

Zeitgesteuerte Azure WebJobs – so einfach kann Azure sein

$
0
0

Das noch in Entwicklung befindliche Azure WebJob SDK bietet einige coole Features zum Verarbeiten und Bereitstellen von Daten. Bekanntes Beispiel ist das Sample welches auf eine Azure Queue lauscht und sobald ein Item da vorhanden ist anfängt dies zu verarbeiten.

Szenario: Zeitgesteuerte Aktivitäten – ohne Queue und co.

Mein Szenario war allerdings wesentlich trivialer: Ich wollte eigentlich nur eine Möglichkeit haben eine Methode zeitgesteuert aufzurufen und eine Datei in den Blobstorage abzulegen – ohne Cloud und co.

Zum Code:

   1:class Program
   2:     {
   3:staticvoid Main(string[] args)
   4:         {
   5:             JobHost host = new JobHost();
   6:             host.Call(typeof(Program).GetMethod("WriteFile"));
   7:         }
   8:  
   9:         [NoAutomaticTrigger]
  10:publicstaticvoid WriteFile([Blob("container/foobar.txt")]TextWriter writer)
  11:         {
  12:             writer.WriteLine("Hello World..." + DateTime.UtcNow.ToShortDateString() + " - " + DateTime.UtcNow.ToShortTimeString());
  13:         }
  14:     }

Wer die bekannten Beispiele anschaut wird feststellen dass die Methode “RunAndBlock” nicht aufgerufen wird. Dies ist auch gar nicht nötig da das Program nur von dem Scheduler aufgeweckt wird und die “write” Methode aufruft.

Damit der Code auch funktioniert muss man noch folgende Konfigurationen hinterlegen, danach kann man die gesamte Konsolenanwendung zippen und im Azure Portal hochladen und den Scheduler entsprechen konfigurieren. Konfiguration:

   1:<?xml version="1.0" encoding="utf-8" ?>
   2:<configuration>
   3:<connectionStrings>
   4:<add name="AzureJobsDashboard" connectionString="DefaultEndpointsProtocol=https;AccountName=...;AccountKey=..."/>
   5:<add name="AzureJobsStorage" connectionString="DefaultEndpointsProtocol=https;AccountName=...;AccountKey=..."/>
   6:</connectionStrings>
   7:<startup>
   8:<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
   9:</startup>
  10:</configuration>

Nach dem Upload:

Die “WebJobs” leben innerhalb einer Azure WebSite. Wer einen ständig laufenden WebJob benötigt sollte sicher gehen dass die Azure Website mit “AlwaysOn=True” läuft!

image

Es gibt auch ein kleines Administrationsportal für die WebJobs:

image

Auf Seiten des Storages werden einige Container angelegt – inklusive dem Container den ich in der Konsole benutze.

image

Und natürlich ist auch die Datei vorhanden:

image

Fazit

Die ersten Gehversuche sind ziemlich einfach und trotzdem scheint es recht ausgeklügelt zu sein. Gefällt schonmal.

Der (nicht allzu komplizierte) Code stammt unter anderem von einem Entwickler des WebJob Teams auf Stackoverflow. Der Code ist natürlich auch auf GitHub.


Viewing all articles
Browse latest Browse all 358