Ich entwickle eine Azure WebJobs-Programmdatei, die ich mit mehreren Azure-Websites verwenden möchte. Jede Website benötigt eine eigene Azure Storage-Warteschlange. Das Problem, das ich sehe, ist, dass die "ProcessQueueMessage" erfordert, dass der Warteschlangenname statisch als ein Attribut des ersten Parameters "inputText" definiert wird. Ich möchte lieber, dass der Name der Warteschlange eine Konfigurationseigenschaft der ausgeführten Azure-Websiteinstanz ist und dass die ausführbare Datei des Jobs zur Laufzeit beim Start gelesen wird. Gibt es eine Möglichkeit, dies zu tun?Wie wird der Name der Azure-WebJob-Warteschlange zur Laufzeit festgelegt?
Antwort
Leider ist das nicht möglich. Sie können die Schnittstelle IBinder
verwenden, um dynamisch an eine Warteschlange zu binden, aber Sie haben keinen auslösenden Mechanismus dafür.
Grundsätzlich muss der Name der Eingabewarteschlange fest codiert sein, wenn Sie Trigger wünschen. Zur Ausgabe können Sie die zuvor erwähnte Schnittstelle verwenden.
Here is eine Probe für IBinder
. Das Beispiel bindet einen Blob dynamisch, aber Sie können etwas sehr ähnliches für Warteschlangen tun.
Dies ist wahrscheinlich eine alte Frage, aber für den Fall, dass jemand über diesen Beitrag stolpert. Dies wird jetzt unterstützt, indem ein JobHostConfiguration
Objekt in den JobHost-Konstruktor übergeben wird.
Das jetzt getan werden kann. Erstellen Sie einfach eine INameResolver
, um es Ihnen zu ermöglichen, eine beliebige Zeichenfolge, die in Prozentzeichen (%) umgeben ist, aufzulösen. Zum Beispiel, wenn dies Ihre Funktion mit einem Warteschlangennamen angegeben:
public static void WriteLog([QueueTrigger("%logqueue%")] string logMessage)
{
Console.WriteLine(logMessage);
}
Beachten Sie, wie es% (Prozent) Zeichen rund um den String logqueue
. Dies bedeutet, dass das Jobsystem versucht, den Namen mithilfe eines INameResolver
zu lösen, den Sie erstellen und dann bei Ihrem Job registrieren können.
Hier ist ein Beispiel für einen Resolver, der in den nur die Zeichenfolge angegebenen Prozentzeichen nehmen und es in Ihrem AppSettings in der Konfigurationsdatei nachschlagen:
public class QueueNameResolver : INameResolver
{
public string Resolve(string name)
{
return ConfigurationManager.AppSettings[name].ToString();
}
}
Und dann in Ihrer Datei Program.cs, Sie müssen nur dies verdrahten:
var host = new JobHost(new JobHostConfiguration
{
NameResolver = new QueueNameResolver()
});
host.RunAndBlock();
- 1. Wie wird der Name des Formularelements festgelegt?
- 2. C++ dynamische Objekte. Wie wird die Objektgröße zur Laufzeit festgelegt?
- 3. Wie wird der Name der Zuordnungstabelle für eine Entität in JPA zur Laufzeit abgerufen?
- 4. Wie wird der Name der Datei festgelegt, wenn ein Pdf in einem Browser gestreamt wird?
- 5. OS X: Zur Laufzeit wird der Name der Anwendung so eingestellt, wie er im Dock und in der Menüleiste erscheint.
- 6. Azure WebApp/WebSite Name zur Laufzeit abrufen
- 7. Erweitern der Klasse zur Laufzeit
- 8. Ändern der Datensatzverbindungszeichenfolge zur Laufzeit
- 9. Ändern der Größe der winform zur Laufzeit
- 10. Wie wird der ListView-Stil in der Ressource festgelegt?
- 11. C# Aktivieren/Deaktivieren der Netzwerkablaufverfolgung zur Laufzeit?
- 12. Wie wird der Name der heruntergeladenen Datei auf einer HttpResponse festgelegt?
- 13. Wie ändert man Android-Name und Symbol zur Laufzeit?
- 14. TD wird zur Laufzeit erweitert
- 15. Liste der Log4J Appender zur Laufzeit abrufen
- 16. Wie wird der AFNetworking 2.0-Standardkopf festgelegt?
- 17. Wie wird der Bereich in CXF festgelegt?
- 18. Wie wird der InputStream-Inhalt festgelegt? Länge
- 19. Wie wird die Höhe der Symbolleiste festgelegt?
- 20. Wie wird die Breite der Diagrammleiste festgelegt?
- 21. Wie wird der Typ eines Fensterereignisses festgelegt?
- 22. Festlegen der Hintergrundfarbe der Schaltfläche in WPF zur Laufzeit
- 23. Anpassen der PowerPoint-Multifunktionsleiste zur Laufzeit
- 24. Änderung der Java-Zeitzone zur Laufzeit
- 25. Ändern der Größe von DialogFragment zur Laufzeit
- 26. Ändern der Druckereinstellungen in Berichten zur Laufzeit
- 27. Ändern der Größe einer THREE.CubeGeometry zur Laufzeit
- 28. Android - Ändern der ImageView-Position zur Laufzeit
- 29. Bestätigung der Nachricht zur Laufzeit in asp.net
- 30. Ändern der Komponentenklasse zur Laufzeit auf Anfrage
@ eklein23 Könnten Sie diese Antwort als "Antwort" markieren :) Danke. – Nordes
Die Standard-JobHostConfiguration in neueren Versionen des SDK enthält automatisch einen NameResolver, so dass Sie keine eigenen mehr definieren müssen. Sie können direkt% configkey% verwenden und es sollte funktionieren. – viblo