Accéder au contenu principal

Envoyer d'un message via un service sans attente de réponse

Ce scénario s'applique uniquement à Talend ESB, Talend Data Services Platform, Talend MDM Platform, Talend Real-Time Big Data Platform et à Talend Data Fabric.

Dans ce scénario, un Job fournisseur et un Job consommateur sont nécessaires. Les Jobs suivants, construits sur les composants de la famille ESB/Web Service implémentent des services Web définis dans le nœud Services du Repository.

  • Dans la vue Repository, cliquez-droit sur le nœud Services et, dans le menu contextuel, sélectionnez Create Service.
  • Dans l'assistant qui s'ouvre, saisissez ServiceRequest dans le champ Name et cliquez sur Next.
  • Sélectionnez l'option Create new WSDL
  • Cliquez sur Finish pour valider la création. Le service s'ouvre dans l'espace de modélisation graphique.
  • Cliquez-droit sur le port ServiceRequestPort dans le squelette WSDL et sélectionnez Show properties. Dans le champ Address, spécifiez l'adresse où vous souhaitez publier le service, par exemple, http://127.0.0.1.8088/esb/provider.
  • Cliquez sur le type de port ServiceRequestPortType dans le squelette WSDL. Modifiez son nom en TEST_ProviderJobSoapBinding.
  • Cliquez sur l'opération ServiceRequestOperation dans le squelette WSDL. Modifiez son nom en invoke(anyType):anyType.
  • Sauvegardez le fichier WSDL. Le nouveau service Web défini s'affiche sous le nœud Services de la vue Repository.
  • Sous le nœud Services, cliquez-droit sur ServiceRequest 0.1 et sélectionez Import WSDL Schemas. Cette option importe les métadonnées WSDL du service dans le Repository, dans Metadata > File XML, ce qui vous permet de partager les informations des opérations à travers les services et les autres composants.

Le Job fournisseur comprend les composants suivants : un tESBProviderRequest, un tXMLMap et deux tLogRow.

  • Déposez les composants suivants de la Palette dans l'espace de modélisation graphique : un tESBProviderRequest, un tXMLMap et deux tLogRow.

  • Dans l'espace de modélisation graphique, double-cliquez sur le composant tESBProviderRequest_1 afin d'afficher sa vue Component et définissez ses Basic settings.

  • Sélectionnez Repository dans la liste Property Type et cliquez sur le bouton [...] afin de choisir le service, la granularité du nom du port et l'opération.

  • Cliquez sur OK.

  • Cliquez sur le bouton [...] à côté du champ Edit schema pour voir le schéma du tESBProviderRequest_1.

  • Cliquez sur OK.

  • Connectez le tESBProviderRequest_1 au composant tLogRow_1.

  • Double-cliquez sur le tLogRow_1 dans l'espace de modélisation graphique afin d'afficher sa vue Component et définir ses Basic settings.

  • Cliquez sur le bouton [...] à côté du champ Edit Schema et définissez le schéma comme suit.

  • Connectez le tLogRow_1 au tXMLMap_1.

  • Reliez le tXMLMap_1 et tLogRow_2 et nommez la connexion payload.

  • Dans l'espace de modélisation graphique, double-cliquez sur le tXMLMap_1 afin d'ouvrir le Map Editor.

  • Dans la partie inférieure droite de l'éditeur, cliquez sur le bouton [+] pour ajouter une ligne à la table payload et nommez cette ligne payload.

  • Dans la colonne Type de cette ligne payload, sélectionnez le type de données Document. La racine XML correspondante est ajoutée automatiquement à la table supérieure de droite, représentant le flux de sortie.

  • Dans la table payload, cliquez-droit sur root pour ouvrir son menu contextuel.

  • Dans le menu contextuel, sélectionnez Create Sub-Element et saisissez response dans la boîte de dialogue.

  • Cliquez-droit sur le nœud response et sélectionnez As loop element dans le menu contextuel.

  • Répétez l'opération pour créer un sous-élément request du nœud root dans la table d'entrée et définissez le nœud request comme élément répétable.

  • Cliquez sur le nœud request dans la table d'entrée et déposez-le dans la colonne Expression de la ligne du nœud response de la table de sortie.

  • Cliquez sur OK pour valider le mapping et fermer l'éditeur.

  • Double-cliquez sur le tLogRow_2 dans l'espace de modélisation graphique afin d'afficher sa vue Component et définir ses Basic settings.

  • Cliquez sur le bouton [...] à côté du champ Edit Schema et définissez le schéma comme suit.

  • Sauvegardez le Job.

Le Job consommateur comprend un tFixedFlowInput, un tXMLMap, un tESBConsumer et deux tLogRow.

  • Déposez les composants suivants de la Palette dans l'espace de modélisation graphique : un tFixedFlowInput, un tXMLMap, un tESBConsumer et deux tLogRow.

  • Double-cliquez sur le tFixedFlowInput_1 afin d'afficher sa vue Component et définissez ses Basic settings.

  • Configurez le schéma du composant tFixedFlowInput_1.

  • Cliquez sur le bouton [+] pour ajouter une ligne de type String et nommez-la payloadString.

  • Cliquez sur OK.

  • Dans le champ Number of rows, paramétrez le nombre de lignes à 1.

  • Dans la zone Mode, sélectionnez Use Single Table et saisissez world entre guillemets, dans le champ Value.

  • Connectez le tFixedFlowInput_1 au tXMLMap_1.

  • Reliez le tXMLMap_1 au tESBConsumer_1 et nommez la connexion payload.

  • Dans l'espace de modélisation graphique, double-cliquez sur le tXMLMap_1 afin d'ouvrir le Map Editor.

  • Dans la table de sortie, cliquez-droit sur root pour ouvrir son menu contextuel.

  • Dans le menu contextuel, sélectionnez Create Sub-Element et saisissez request dans la boîte de dialogue.

  • Cliquez-droit sur le nœud request et sélectionnez As loop element dans le menu contextuel.

  • Cliquez sur le nœud payloadstring dans la table d'entrée et déposez-le dans la colonne Expression dans la ligne du nœud request de la table de sortie.

  • Cliquez sur OK pour valider le mapping et fermer l'éditeur Map Editor.

  • Démarrez le Job fournisseur. Vous pouvez voir, dans le log d'exécution :

    ...
    web service [endpoint: http://127.0.0.1:8088/esb/provider] published
    ...
  • Dans la vue Component du tESBConsumer_1, configurez ses Basic settings.

  • Cliquez sur le bouton [...] à côté du champ Service configuration pour ouvrir l'éditeur.

  • Dans le champ WSDL, saisissez : http://127.0.0.1:8088/esb/provider?WSDL

  • Cliquez sur le bouton Refresh afin de récupérer le nom du port et de l'opération.

  • Cliquez sur OK.

  • Dans la vue Basic settings du composant tESBConsumer, configurez le schéma d'entrée (Input Schema) comme suit.

  • Configurez le schéma de réponse (Response Schema) comme suit.

  • Configurez le schéma Fault comme suit.

  • Connectez le composant tESBConsumer_1 au tLogRow_1 et au tLogRow_2.

  • Dans l'espace de modélisation graphique, double-cliquez sur le composant tLogRow_1 afin d'ouvrir sa vue Basic settings dans Component.

  • Cliquez sur le bouton [...] à côté du champ Edit Schema et définissez le schéma comme suit.

  • Dans l'espace de modélisation graphique, double-cliquez sur tLogRow_2 afin d'afficher sa vue Component et définir ses Basic settings.

  • Cliquez sur le bouton [...] à côté du champ Edit Schema et définissez le schéma comme suit.

  • Sauvegardez le Job.

  • Exécutez le Job fournisseur. Dans la console, vous pouvez voir :

    INFO: Setting the server's publish address to be http://127.0.0.1:8088/esb/provider

    2011-04-21 14:14:36.793:INFO::jetty-7.2.2.v20101205

    2011-04-21 14:14:37.856:INFO::Started

    SelectChannelConnector@127.0.0.1:8088

    web service [endpoint: http://127.0.0.1:8088/esb/provider] published

  • Exécutez le Job consommateur. Vous pouvez voir dans le log d'exécution du Job :

    Starting job CallProvider at 14:15 21/04/2011.
    
    [statistics] connecting to socket on port 3942
    [statistics] connected
    TEST_ESBProvider2
    TEST_ESBProvider2SoapBingding
    |
    [tLogRow_2] payloadString: <request>world</request>
    {http://talend.org/esb/service/job}TEST_ESBProvider2
    {http://talend.org/esb/service/job}TEST_ESBProvider2SoapBinding
    invoke
    [tLogRow_1] payload: null
    [statistics] disconnected
    Job CallProvider2 ended at 14:16 21/04/2011. [exit code=0]
  • Dans le log du fournisseur vous pouvez voir le log des traces :

    web service [endpoint: http://127.0.0.1:8088/esb/provider]
    published
    [tLogRow_1] payload: <?xml version="1.0" encoding="UTF-8"?>
    <request>world</request>
    ### world
    [tLogRow_2] content: world
    [tLogRow_3] payload: <?xml version="1.0" encoding="UTF-8"?>
    <response xmlns="http://talend.org/esb/service/job">Hello, world!</response>
    web service [endpoint: http://127.0.0.1:8088/esb/provider] unpublished
    [statistics] disconnected
    Job ESBProvider2 ended at 14:16 21/04/2011. [exit code=0]

Cette page vous a-t-elle aidé ?

Si vous rencontrez des problèmes sur cette page ou dans son contenu – une faute de frappe, une étape manquante ou une erreur technique – faites-le-nous savoir.