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

Cette rubrique décrit comment écrire une solution d’application d’écouteur Azure qui peut lire et traiter des messages Microsoft Dataverse qui sont publiés sur Azure Service Bus. Pour commencer, vous devez vous familiariser avec la manière d’écrire un écouteur Azure Service Bus avant d’essayer de découvrir les spécificités d’un écouteur Dataverse. Pour plus d’informations, voir la Documentation Azure Service Bus.

Écrire un écouteur de file d’attente

Une file d’attente messages est un référentiel de messages reçu au point de terminaison de service bus. Un écouteur de file d’attente est une application qui lit et traite les messages mis en file d’attente. Comme les messages de bus des services sont stockés dans une file d’attente, un écouteur n’a pas besoin d’effectuer une écoute active pour que les messages soient reçus 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 décrits dans la section suivante doivent écouter activement ou ils manqueront l’opportunité de lire un message. Ces messages peuvent provenir de Dataverse ou d’une autre source.

Important

Pour écrire un écouteur de file d’attente, vérifiez chaque action d’en-tête de message pour déterminer si le message a été généré sur la base de Dataverse. Pour obtenir des informations sur la procédure à suivre, voir Filtrer les messages.

Vous pouvez créer une lecture de message destructive en utilisant le mode Receive 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, pour lequel le message est lu mais toujours disponible dans la file d’attente. Pour plus d’informations sur les messages de lecture d’une file d’attente, voir Comment recevoir des messages depuis une file d’attente.

Une rubrique est similaire à une file d’attente mais implémente un modèle de publication/d’abonnement. Un ou plusieurs écouteurs peuvent s’abonner à la rubrique et recevoir des messages de sa file d’attente. Pour plus d’informations, voir : 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 des files d’attente et des rubriques dans votre conception du logiciel multi-système peut entraîner le découplage des systèmes. Si l’application d’écoute n’est jamais indisponible, la remise des messages issus de Dataverse aboutira toujours et l’application d’écoute pourra continuer à traiter le message de file d’attente lorsqu’elle est en ligne. Pour plus d’informations, voir : 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 de bus des services pris en charge par Dataverse : unidirectionnel, bidirectionnel et REST. Un écouteur unidirectionnel peut lire et traiter un message publié sur le bus des services. Un écouteur bidirectionnel peut effectuer la même chose mais peut également renvoyer une chaîne de quelques informations dans Dataverse. Un écouteur REST fait la même chose que l’écouteur bidirectionnel sauf qu’il fonctionne avec un point de terminaison REST. Notez que ces auditeurs doivent effectuer une écoute active au niveau du point de terminaison de service pour lire un message envoyé via le bus des services. Si l’écouteur n’écoute pas lorsque Dataverse tente de publier un message sur le bus des services, le message ne sera 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

Lorsque votre écouteur est inscrit avec un point de terminaison, la méthode Execute de l’écouteur est appelée lorsqu’un message est publié sur le bus des services par Dataverse. La méthode Execute ne retourne aucune donnée à partir de l’appel de la méthode. Pour plus d’informations, voir l’exemple d’écouteur à sens unique Exemple : écouteur unidirectionnel.

Écouteur bidirectionnel

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

Écouteur REST

Pour le contrat REST, la méthode Execute renvoie une chaîne de l’appel de méthode. Reportez-vous à l’exemple d’écouteur REST Exemple : Port d’écoute REST, pour plus d’informations. 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.

Notes

Lors de l’utilisation du plug-in prêt à l’emploi (ServiceBusPlugin) 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 compatible Azure personnalisé peut se servir de 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 WS2007 Federation 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
  • ID de l’utilisateur émetteur
  • Nom logique de la table
  • Nom de la requête

Ces informations identifient l’organisation, l’utilisateur, la table et la demande de message traitée par Dataverse résultant du message de bus des services en cours de publication. La disponibilité de ces propriétés indique que le message a été envoyé depuis Dataverse. Votre code d’écouteur peut décider comment traiter le message à partir de ces valeurs.

Lisez 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 d’écoute pour solution Azure dans le corps d’un message service bus. Dans les versions précédentes, seul un format binaire .NET était pris en charge. Pour une interopérabilité entre les plateformes (non .NET) , vous pouvez désormais spécifier un des trois formats de données pour le corps du message : .NET binaire, JSON ou XML. Ce format est spécifié dans la colonne MessageFormat de la table ServiceEndpoint.

Lorsque vous recevez des messages, votre application d’écoute peut lire le contexte de données dans le corps du message selon le type de contenu du message. L’exemple de code pour ce faire est indiqué ci-dessous.

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 compatible Azure personnalisé
Exemple : écouteur unidirectionnel
Exemple : écouteur bidirectionnel
Exemple : Port d’écoute REST
Utilisation des données Dataverse dans votre solution Azure
Utilisation des données d’événement Dataverse dans votre solution Azure Event Hub

Notes

Pouvez-vous nous indiquer vos préférences de langue pour la documentation ? Répondez à un court questionnaire. (veuillez noter que ce questionnaire est en anglais)

Le questionnaire vous prendra environ sept minutes. Aucune donnée personnelle n’est collectée (déclaration de confidentialité).