6

Utworzono Azure Function, która jest uruchamiana za każdym razem, gdy nowa wiadomość jest dodawana do kolejki Azure ServiceBus. Ten kod działa poprawnie:Używanie funkcji BrokeredMessage z ServiceBus Kolejka wyzwalacza w funkcji Azure

#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}"); 
} 

Widziałem, że można również powiązać wiadomości do POCO tak:

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

Teraz chciałbym związać wiadomości do BrokeredMessage ponieważ muszę mieć dostęp do właściwości wiadomości.

Odpowiedz

13

Edit Nowe SDK obsługuje SDK servicebus korzystając #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}"); 
} 

Stara wersja

tylko dwa kroki:

mam utworzyć plik project.json dodać odwołanie do pakiet Nuget WindowsAzure.ServiceBus (patrz SO Post):

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

Dodałem odniesienie do wynegocjowanego wiadomości:

using Microsoft.ServiceBus.Messaging; 

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

Twój problem został rozwiązany powyżej? – mathewc

+0

Tak, zajęło mi trochę czasu, aby dowiedzieć się, jak powiązać z brokeremessage. Po prostu udostępnianie informacji ^^ – Thomas

1

Próbowałem rozwiązanie Thomasa i wydaje się, że to już nie działa.

W documentation stany:

Ponadto następujące zespoły są specjalne obudowane i może być określany przez simplename (np #r "AssemblyName"):

  • ...
  • Microsoft.ServiceBus

Tak bez dotykając pliku project.json następują prace:

#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}"); 
}