6

Ich habe eine Azure Function erstellt, die jedes Mal ausgelöst wird, wenn eine neue Nachricht zu einer Azure ServiceBus-Warteschlange hinzugefügt wird. Mit diesem Code, es funktioniert:Verwenden von BrokeredMessage mit ServiceBus Warteschlangenauslöser in Azure-Funktion

#r "Newtonsoft.Json" 
#load "..\shared\person.csx" 

using Newtonsoft.Json; 
using Newtonsoft.Json.Serialization; 

public static void Run(string message, TraceWriter log) 
{ 
    var person = JsonConvert.DeserializeObject<Person>(message, 
      new JsonSerializerSettings() {ContractResolver = new CamelCasePropertyNamesContractResolver()}); 
    log.Verbose($"From DeserializeObject: {person.FirstName} {person.LastName}"); 
} 

Ich habe gesehen, dass ich auch die Nachricht an einen POCO so binden kann:

public static void Run(Person message, TraceWriter log) 
{ 
    log.Verbose($"From DeserializeObject: {message.FirstName} {message.LastName}"); 
} 

Nun möchte Ich mag die Nachricht an eine BrokeredMessage binden weil ich Zugriff auf die Eigenschaften der Nachricht haben muss.

Antwort

13

bearbeiten Neue SDK unterstützt den Servicebus sdk #r directive

#r "Microsoft.ServiceBus" 
using Microsoft.ServiceBus.Messaging; 

public static void Run(BrokeredMessage msg, TraceWriter log) 
{ 
    log.Info($"C# ServiceBus queue trigger function processed message: {msg}"); 
} 

Alte Version

Nur zwei Schritten: einen Verweis auf in den

erstelle ich habe eine project.json Datei das WindowsAzure.ServiceBus Nuget-Paket (siehe SO Post):

{ 
    "frameworks": { 
     "net46":{ 
      "dependencies": { 
       "WindowsAzure.ServiceBus": "2.7.6" 
      } 
     } 
    } 
} 

Ich habe einen Verweis auf die brokered Nachricht hinzugefügt:

using Microsoft.ServiceBus.Messaging; 

public static void Run(BrokeredMessage message, TraceWriter log) 
{ 
    log.Verbose("Function has been triggered !!!"); 
} 
+0

So ist Ihr Problem mit dem oben genannten gelöst? – mathewc

+0

Ja, es hat einige Zeit gedauert, bis ich herausgefunden habe, wie ich mich an eine Brokere Nachricht binden kann. Teilen Sie einfach die Informationen ^^ – Thomas

1

Ich versuchte Thomas Lösung, und es scheint, dass dies nicht mehr funktioniert.

Die documentation Zustände:

Darüber hinaus sind die folgenden Baugruppen besondere verrohrten und können durch simplename (zB #r "Assembly") verwiesen werden:

  • ...
  • Microsoft.ServiceBus

Also ohne berührend die Projekt.json Datei die folgenden Arbeiten:

#r "Microsoft.ServiceBus" 

using Microsoft.ServiceBus.Messaging; 

public static void Run(BrokeredMessage msg, TraceWriter log) 
{ 
    log.Info($"C# ServiceBus queue trigger function processed message: {msg}"); 
}