6

J'ai créé un Azure Function qui est déclenché à chaque fois qu'un nouveau message est ajouté à une file d'attente Azure ServiceBus. Avec ce code, il fonctionne très bien:Utilisation de BrokeredMessage avec le déclencheur de file d'attente ServiceBus dans la fonction 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}"); 
} 

Je l'ai vu que je peux aussi lier le message à un POCO comme ça:

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

Maintenant, je voudrais lier le message à un BrokeredMessage parce que j'ai besoin d'avoir accès aux propriétés du message.

Répondre

13

Modifier nouveau SDK prend en charge le sdk servicebus utilisant #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}"); 
} 

Ancienne version

Seulement deux étapes:

J'ai créer un fichier project.json d'ajouter une référence à le paquet WindowsAzure.ServiceBus Nuget (voir SO Post):

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

J'ai ajouté une référence au message négocié:

using Microsoft.ServiceBus.Messaging; 

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

Donc, votre problème est résolu avec ce qui précède? – mathewc

+0

Oui, il m'a fallu du temps pour comprendre comment lier un courtier à un message. Juste partager l'information ^^ – Thomas

1

J'ai essayé la solution de Thomas et il semble que cela ne fonctionne plus.

Les documentation états:

En outre, les ensembles suivants sont tubé et peut être référencées par simplename (par exemple #R "AssemblyName"):

  • ...
  • Microsoft.ServiceBus

Donc sans toucher le fichier project.json les travaux suivants:

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