Partager via


Écrire une application d’écouteur pour une solution Azure

Cette rubrique explique comment écrire une application d’écouteur de solution Azure capable de lire les messages Microsoft Dataverse publiés dans Azure Service Bus. En guise de prérequis, vous devez vous familiariser avec la façon d’écrire un écouteur Azure Service Bus avant d’essayer d’apprendre les spécificités d’un écouteur Dataverse. Pour plus d’informations, consultez la documentation Azure Service Bus.

Écrire un écouteur de file d’attente

Une file d’attente de messages est un référentiel de messages reçus sur un point de terminaison Service Bus. Un écouteur de file d’attente est une application qui lit et traite ces messages mis en file d’attente. Étant donné que les messages Service Bus sont stockés dans une file d’attente, un écouteur n’a pas besoin d’écouter activement les messages à recevoir dans la file d’attente. Un écouteur de file d’attente peut être démarré une fois que les messages sont arrivés dans la file d’attente en vue de les traiter. D’autres types d’écouteurs abordés dans la section suivante doivent être activement à l’écoute ou ils manqueront l’occasion de lire un message. Ces messages peuvent provenir de Dataverse ou d’une autre source.

Important

Lors de l’écriture d’un écouteur de file d’attente, vérifiez chaque action d’en-tête de message pour déterminer si le message provient de Dataverse. Pour plus d’informations sur la procédure à suivre, consultez Filtrer les messages.

Vous pouvez effectuer une lecture destructrice de message en utilisant Receive en mode ReceiveMode.ReceiveAndDelete, où le message est lu et supprimé de la file d’attente, ou une lecture non-destructive en utilisant le mode ReceiveMode.PeekLock, où le message est lu mais reste toujours disponible dans la file d’attente. Pour plus d’informations sur la lecture des messages à partir d’une file d’attente, consultez Comment recevoir des messages d’une file d’attente.

Une rubrique est similaire à une file d’attente, mais implémente un modèle de publication/abonnement. Un ou plusieurs abonnés peuvent s’abonner au sujet et recevoir des messages de sa file d’attente. Plus d’informations : Files d’attente, rubriques et abonnements

Important

Pour utiliser ces contrats de file d’attente ou de rubrique, vous devez créer vos applications d’écoute avec le Kit de développement logiciel Azure.

L’utilisation de files d’attente et de rubriques dans votre conception logicielle multi-système peut entraîner le découplage des systèmes. Si l’application de l’écouteur n’est jamais disponible, la remise de messages de Dataverse réussit toujours et l’application de l’écouteur peut continuer à traiter le message de file d’attente lorsqu’il est de retour en ligne. Plus d’informations : Files d’attente, rubriques et abonnements

Écrire un écouteur unidirectionnel, bidirectionnel ou REST

Outre l’écouteur de file d’attente décrit précédemment, vous pouvez écrire un écouteur pour trois autres contrats Service Bus pris en charge par Dataverse : unidirectionnel, bidirectionnel et REST. Un écouteur unidirectionnel peut lire et traiter un message publié dans Service Bus. Un écouteur bidirectionnel peut faire de même, mais peut également renvoyer une chaîne d’informations à Dataverse. Un écouteur REST est identique à l’écouteur bidirectionnel, sauf qu’il fonctionne avec un point de terminaison REST. Notez que ces récepteurs doivent écouter activement à un point de terminaison de service pour lire un message envoyé sur le Service Bus. Si l’écouteur n’écoute pas lorsque Dataverse tente de publier un message dans Service Bus, le message n’est pas envoyé.

L’écriture d’un écouteur est structurée autour de ce qui est appelé ABC : Address (adresse), Binding (liaison) et Contract (contrat).

Écouteur unidirectionnel

Une fois que votre écouteur est inscrit auprès d’un point de terminaison, la méthode de l'écouteur Execute est appelée chaque fois que Dataverse publie un message sur le Service Bus. La Execute méthode ne retourne aucune donnée de l’appel de méthode. Pour plus d’informations, consultez l’exemple d’écouteur unidirectionnel, Exemple : écouteur unidirectionnel.

Écouteur bidirectionnel

Pour ce contrat bidirectionnel, la Execute méthode retourne une chaîne à partir de l’appel de méthode. Pour plus d’informations, consultez l’exemple d’écouteur bidirectionnel, Exemple : écouteur bidirectionnel.

Écouteur REST

Pour le contrat REST, la Execute méthode retourne une chaîne à partir de l’appel de méthode. Pour plus d'informations, reportez-vous à l'échantillon écouteur REST. Notez que dans l’exemple d’écouteur REST, un WebServiceHost est instancié et non un ServiceHost, comme c’est le cas dans l’exemple bidirectionnel.

Note

Lors de l’utilisation du plug-in prêt à l’emploi du service de point de terminaison avec un écouteur bidirectionnel ou REST, le plug-in n’utilise aucune donnée de chaîne issue de l’écouteur. Toutefois, un plug-in personnalisé prenant en compte Azure peut utiliser ces informations.

Lorsque vous exécutez les exemples d’écouteur, le secret de l’émetteur correspondant est la clé de gestion Azure Service Bus. La liaison HTTP de fédération WS2007 utilise le mode token et le protocole WS-Trust 1.3.

Filtrer les messages

Il existe un ensemble de propriétés contenant des informations supplémentaires ajoutées à chaque Propriété de message sponsorisé issus de Dataverse. L’ensemble de propriétés, disponibles avec les points de terminaison des files d’attente, relais et des rubriques, contient les informations suivantes :

  • URI de l’organisation
  • ID de l’utilisateur appelant
  • Initialisation de l’ID utilisateur
  • Nom logique de table
  • Nom de la requête

Ces informations identifient l’organisation, l’utilisateur, la table et la demande de message en cours de traitement par Dataverse qui a entraîné la publication du message Service Bus. La disponibilité de ces propriétés indique que le message a été envoyé à partir de Dataverse. Votre code d’écouteur peut décider comment traiter le message en fonction de ces valeurs.

Lire le contexte de données dans plusieurs formats de données

Le contexte de données de l’opération Dataverse actuelle est transmis à votre application auditeur de solution Azure dans le corps d’un message Service Bus. Dans les versions précédentes, seul un format binaire .NET a été pris en charge. Pour l’interopérabilité entre plateformes (non-.NET), vous pouvez désormais spécifier l’un des trois formats de données pour le corps du message : .NET Binary, JSON ou XML. Ce format est spécifié dans la colonne MessageFormat de la table ServiceEndpoint.

Lorsque vous recevez des messages, votre application d’écouteur peut lire le contexte de données dans le corps du message en fonction du contentType du message, comme indiqué dans l’exemple de code.

var receivedMessage = inboundQueueClient.Receive(TimeSpan.MaxValue);  
  
if (receivedMessage.ContentType == "application/msbin1")  
{  
    RemoteExecutionContext context = receivedMessage.GetBody<RemoteExecutionContext>();  
}  
else if (receivedMessage.ContentType == "application/json")  
{  
    //string jsonBody = new StreamReader(receivedMessage.GetBody<Stream>(), Encoding.UTF8).ReadToEnd();  
    RemoteExecutionContext contextFromJSON = receivedMessage.GetBody<RemoteExecutionContext>(  
        new DataContractJsonSerializer(typeof(RemoteExecutionContext)));  
}  
else if (receivedMessage.ContentType == "application/xml")  
{  
    //string xmlBody = new StreamReader(receivedMessage.GetBody<Stream>(), Encoding.UTF8).ReadToEnd();  
    RemoteExecutionContext contextFromXML = receivedMessage.GetBody<RemoteExecutionContext>(  
        new DataContractSerializer(typeof(RemoteExecutionContext)));  
}  

Voir aussi

Extensions Azure
Écrire un plug-in personnalisé prenant en compte Azure
Exemple : écouteur unidirectionnel
Exemple : écouteur bidirectionnel
Exemple : écouteur REST
Utiliser des données Dataverse dans votre solution Azure
Utiliser des données d’événements Dataverse dans votre solution Azure Event Hub