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]