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

Cette rubrique décrit comment écrire une solution d’application d’écouteur Azure qui peut lire et traiter des messages Dynamics 365 for Customer Engagement 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 Dynamics 365 Customer Engagement (on-premises). 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 Dynamics 365 Customer Engagement (on-premises) ou d’une autre source.

Wichtig

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 Dynamics 365 Customer Engagement (on-premises). 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 ReceiveAndDelete, où le message est lu et supprimé de la file d’attente, ou une lecture non-destructive en utilisant le mode PeekLock, pour lequel le message est lu mais toujours disponible dans la file d’attente. L’exemple de code d’écouteur de file d’attente persistante fourni dans ce Kit de développement logiciel peut effectuer une lecture destructive. Pour plus d’informations sur les messages de lecture d’une file d’attente, voir How to Receive Messages from a Queue.

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 : Files d’attente, rubriques et abonnements

Wichtig

Pour utiliser ces contrats de file d’attente ou de rubrique, vous devez créer vos applications d’écouteur avec la version 1.7 ou supérieure du SDK Azure.

L’utilisation des files d’attente et des rubriques dans votre conception du logiciel 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 Dynamics 365 Customer Engagement (on-premises) 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 : 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 Dynamics 365 Customer Engagement (on-premises) : 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 Customer Engagement. 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 Dynamics 365 Customer Engagement (on-premises) 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 Dynamics 365 Customer Engagement (on-premises). 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.

Hinweis

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 Azurepersonnalisé 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 Dynamics 365 for Customer Engagement et Customer Engagement. 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 d’organisation

  • ID de l’utilisateur appelant

  • ID de l’utilisateur émetteur

  • Nom logique de l’entité

  • Nom de la demande

Ces informations identifient l’organisation, l’utilisateur, l’entité et la demande de message traitée par Dynamics 365 Customer Engagement (on-premises) 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 Dynamics 365 Customer Engagement (on-premises). 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 actuelle Dynamics 365 Customer Engagement (on-premises) est transmis à votre application d’écouteur de 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 l’attribut MessageFormat de l’entité ServiceEndpoint.

Hinweis

Cette fonction a été introduite dans CRM Online 2016 Update 1 et CRM 2016 Service Pack 1 (on-premises).

Lorsque vous recevez des messages, votre application d’écouteur 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 de files d’attente persistantes
Exemple : écouteur unidirectionnel
Exemple : écouteur bidirectionnel
Exemple : Port d’écoute REST
Envoyer des données Dynamics 365 Customer Engagement via le bus des services Azure
Utiliser les données des événements Dynamics 365 Customer Engagement dans votre solution Hub d’événements Azure

Hinweis

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é).