2017-10-16 3 views
0

Nous sommes donc dans la position où nous souhaitons décharger certains traitements dans notre application pour améliorer l'expérience utilisateur tout en accomplissant ces tâches lourdes et avons trouvé notre chemin vers Azure Service Bus Queues .Traitement des messages Azure Service Bus Queue avec la fonction Azure

Je comprends comment faire passer les données dans la file d'attente et l'idée de base derrière les files d'attente, mais ce que je n'arrive pas à comprendre, c'est comment les gérer lorsqu'elles entrent en jeu. En y pensant mettre en œuvre et la fonction Azure qui écoute à chaque fois qu'un message entre mais comment puis-je le faire sans interrogation constante? Je comprends que vous pouvez vous abonner à la file d'attente avec OnMessage mais comment cela fonctionne avec une fonction Azure?

Par exemple actuellement, nous faisons quelque chose comme ça,

var client = QueueClient.CreateFromConnectionString(connectionString, queueName); 

BrokeredMessage message = new BrokeredMessage(); 

while ((message = client.Receive(new TimeSpan(hours: 0, minutes: 0, seconds: 30))) != null) 
{ 
    Console.WriteLine(string.Format("Message received: {0}, {1}, {2}", message.SequenceNumber, message.Label, message.MessageId)); 
    message.Complete(); 

    Console.WriteLine("Processing message (sleeping...)"); 
    Thread.Sleep(1000); 
} 

Console.WriteLine("Finished listening Press ENTER to exit program"); 
Console.ReadLine(); 

Mais dans ce cas, nous sommes juste SIMULATION DE droite vote? Cela ne semble pas être une bonne solution. Est-ce que je pense à ce problème dans mon design?

Répondre

2

Azure ServiceBus fonctionne en transmettant de nouveaux messages aux clients connectés au lieu de demander aux clients d'interroger la file d'attente. Avec l'API ServiceBus, vous pouvez utiliser la méthode OnMessage pour configurer une pompe de message, mais si vous utilisez Azure Functions, tout ceci est fait à l'aide d'un déclencheur de bus de service.

Vous configurez simplement Azure Function pour qu'il pointe vers la file d'attente que vous souhaitez écouter. Lorsqu'un nouveau message est ajouté à la file d'attente, votre fonction est déclenchée et le message y est transmis.

Jetez un oeil à l'exemple de déclenchement Service Bus:

https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-service-bus#trigger-sample

+2

Une petite correction - le courtier ne pousse pas les messages au client. Le client Azure Service Bus dispose d'une pompe de messagerie exécutée sur un thread séparé qui interroge les messages. –

+0

Je vous remercie J'ai l'impression que c'était ce que je cherchais, mais je ne pouvais pas trouver la méthodologie exacte pour utiliser cette approche. – tokyo0709