6

Ho creato uno Azure Function che viene attivato ogni volta che un nuovo messaggio viene aggiunto a una coda del ServiceBus di Azure. Con questo codice funziona benissimo:Utilizzo di BrokeredMessage con Trigger coda di servizio in Azure Funzione

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

ho visto che posso anche associare il messaggio a un POCO così:

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

Ora vorrei associare il messaggio a un BrokeredMessage perché ho bisogno di avere accesso alle proprietà del messaggio.

risposta

13

Modifica Nuovo SDK supporta l'SDK ServiceBus utilizzando #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}"); 
} 

vecchia versione

Solo due fasi:

ho creare un file project.json per aggiungere un riferimento a il pacchetto Nuget WindowsAzure.ServiceBus (vedere SO Post):

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

ho aggiunto un riferimento al messaggio mediato:

using Microsoft.ServiceBus.Messaging; 

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

Quindi il problema è risolto con quanto sopra? – mathewc

+0

Sì, mi ci è voluto un po 'di tempo per capire come associare a un messaggio d'errore. Basta condividere le informazioni ^^ – Thomas

1

ho cercato la soluzione Thomas' e sembra che questo non funziona più.

I documentation stati:

Inoltre, i seguenti gruppi sono speciali carter e possono essere consultati da simplename (es #r "AssemblyName"):

  • ...
  • Microsoft.ServiceBus

Quindi, senza toccando il file project.json i seguenti lavori:

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