cSEDA

Composants Mediation Talend ESB Guide de référence

EnrichVersion
6.1
EnrichProdName
Talend Open Studio for ESB
Talend Real-Time Big Data Platform
Talend Data Fabric
Talend ESB
Talend MDM Platform
Talend Data Services Platform
task
Création et développement
EnrichPlatform
Studio Talend

Propriétés du cSEDA

Famille du composant

Core

Fonction

Le composant cSEDA permet d'échanger, de manière asynchrone, des messages dans une file BlockingQueue et d'invoquer les consommateurs dans un process séparé du producteur, dans un seul CamelContext.

Objectif

Le cSEDA vous permet de produire et consommer des messages de manière asynchrone dans différents process dans un CamelContext.

Basic settings Lorsque vous utilisez ce composant en tant que composant de début dans une Route :

Name

Saisissez une chaîne de caractères identifiant uniquement l'endpoint.

  Specify maximum capacity sizeCochez cette case pour configurer le nombre maximum de messages pouvant être contenus dans la file SEDA. Spécifiez le nombre dans le champ Size.
 Concurrent consumers

Spécifiez le nombre de process simultanés traitant les échanges.

 

Wait for task to complete

Spécifiez si l'appelant doit attendre que la tâche asynchrone soit terminée ou non avant de continuer. Sélectionnez Always, Never ou IfReplyExpected. L'option par défaut est IfReplyExpected, ce qui signifie que l'appelant attend uniquement si le message est de type Request-Reply. Pour plus d'informations concernant cette option, consultez le site Web http://camel.apache.org/async.html (en anglais).

 TimeoutSpécifiez, en millisecondes, la période avant qu'un producteur SEDA arrête d'attendre qu'une tâche asynchrone soit terminée. Vous pouvez désactiver cette option en utilisant 0 ou une valeur négative.
 Use multiple consumersSpécifie si de multiples consommateurs sont autorisés. Si activé, vous pouvez utiliser le cVM pour un messaging de type Publish-Subscribe, ce qui signifie que vous pouvez envoyer un message dans la file SEDA et faire en sorte que chaque consommateur reçoive une copie du message. Lorsque cette option est activée, elle doit être spécifiée sur chaque endpoint de consommateur.
 Limit concurrent consumersCette option permet de limiter le nombre de consommateurs simultanés à 500 maximum. Par défaut, une exception est retournée si un endpoint SEDA est configuré avec un nombre supérieur.
 Block when fullCette option permet à un process envoyant un message à une file SEDA complète de bloquer la file jusqu'à ce que la capacité de la file soit débloquée. Par défaut, une exception est retournée, indiquant que la file est pleine. En activant cette option, le process d'appel bloque et attend jusqu'à ce que le message soit accepté.
 Poll timeoutSpécifiez, en millisecondes, le délai avant suspension, utilisé lors de l'attente active. Lorsqu'une suspension se produit, le consommateur peut vérifier s'il est possible de continuer l'exécution. Paramétrer une valeur peu élevée permet au consommateur de réagir plus rapidement en cas de déconnexion.
 Lorsque vous utilisez ce composant en tant que composant intermédiaire ou de fin dans une Route :
 Use Exist cSEDACliquez sur le bouton [...] pour sélectionner le consommateur correspondant dans la boîte de dialogue.
Advanced settingsArgumentsCette option est disponible uniquement lorsque le cSEDA est utilisé en tant que composant de début dans une Route. Configurez les arguments facultatifs dans la table correspondante. Cliquez sur le bouton [+] autant de fois que nécessaire afin d'ajouter des arguments dans la table. Cliquez dans le champ Value et saisissez une valeur. Consultez le site Web http://camel.apache.org/seda.html pour plus d'informations concernant les options disponibles.

Utilisation

Le composant cSEDA peut être utilisé comme composant de début, de fin ou comme composant intermédiaire dans une Route.

Scénario : Utiliser les composants cSEDA, cVM et cDirect pour produire et consommer séparément des messages

Dans ce scénario, utilisez un composant cTimer pour déclencher un échange de messages. Le message est routé vers un cSEDA, un cVM et un cDirect séquentiellement, avec un corps de message défini pour chacun d'entre eux, consommé dans un autre process.

Vous allez créer une ressource de Route afin de définir le nombre d'envois de l'échange de messages, utilisée par le composant cTimer.

Créer une ressource de Route et l'appeler dans la Route

  1. Dans la vue Repository, cliquez-droit sur le nœud Resources et sélectionnez Create Resource dans le menu contextuel.

  2. L'assistant [New Route Resource] s'ouvre. Dans le champ Name, saisissez un nom pour la ressource, par exemple SetRepeatCount. Cliquez sur Finish pour fermer l'assistant.

  3. Saisissez repeat.count=2 dans l'espace de modélisation graphique afin de configurer le nombre d'envois de l'échange de messages.

  4. Appuyez sur Ctrl+S pour sauvegarder la ressource de Route.

  5. Cliquez-droit sur la Route dans la vue Repository et sélectionnez Manage Route Resources dans le menu contextuel.

    L'assistant [Manage Route Resources] s'ouvre.

  6. Cliquez sur Add et sélectionnez SetRepeatCount dans la vue Resources de la boîte de dialogue. Cliquez sur OK.

    La ressource de Route SetRepeatCount est ajoutée à la table.

  7. Cliquez sur OK pour fermer l'assistant.

    Pour plus d'informations concernant la création et l'utilisation de ressources de Route, consultez le Guide utilisateur du Studio Talend.

  8. Cliquez sur l'onglet Spring dans la partie inférieure de l'espace de modélisation graphique de la Route.

  9. Saisissez le code suivant dans cette vue, pour appeler la ressource de Route que vous avez créé.

    <bean id="properties" class="org.apache.camel.component.properties.PropertiesComponent">   
        <property name="location" value="classpath:SetRepeatCount.properties"/>  
    </bean>

    Pour plus d'informations concernant l'utilisation de la Configuration Spring dans une Route, consultez le Guide utilisateur du Studio Talend.

Déposer et relier les composants

  1. De la Palette, déposez un cTimer, deux cSEDA, deux cVM, deux cDirect, trois cSetbody et trois composants cLog dans l'espace de modélisation graphique.

  2. Reliez les composants à l'aide de liens Row > Route.

  3. Renommez les composants afin de mieux identifier leur rôle au sein de la Route.

Configurer les composants et les connexions

  1. Double-cliquez sur le composant Starter dans l'espace de modélisation graphique afin d'afficher sa vue Basic settings.

  2. Dans le champ Repeat, saisissez "{{repeat.count}}", défini dans la ressource de Route.

  3. Double-cliquez sur le composant Set_body_SEDA dans l'espace de modélisation graphique pour afficher sa vue Basic settings.

  4. Sélectionnez SIMPLE dans la liste Language.

    Dans le champ Expression, saisissez "to cSEDA" comme corps de message.

    Répétez cette étape afin de définir le corps de message dans le Set_body_VM et le Set_body_Direct en tant que "to cVM" et "to cDirect", respectivement.

    Set_body_VM :

    Set_body_Direct :

  5. Double-cliquez sur le composant SEDA_producer pour afficher sa vue Basic settings.

  6. Cliquez sur le bouton [...] et sélectionnez SEDA_consumer dans l'assistant [Select a Node:], ce qui va consommer le message envoyé au SEDA_producer.

    Répétez cette étape afin de sélectionner le nœud VM_consumer pour VM_producer.

    Sélectionnez le nœud Direct_consumer pour VM_producer.

  7. Double-cliquez sur le composant SEDA_consumer pour afficher sa vue Basic settings.

  8. Dans le champ Name, saisissez "seda" pour identifier cet endpoint. Laissez les paramètres par défaut pour les autres options.

    Répétez cette étape pour renommer en "vm" le VM_consumer.

    Renommez en "direct" le Direct_consumer.

  9. Double-cliquez sur le composant Monitor_SEDA pour afficher sa vue Basic settings.

  10. Sélectionnez INFO dans la liste Level et sélectionnez Specify output log message. Dans le champ Message, saisissez "log cSEDA:${body}" afin d'afficher le corps du message dans la console.

    Répétez cette étape pour spécifier le message de sortie pour Monitor_VM et Monitor_Direct. Saisissez "log cVM:${body}" et "log cDirect:${body}", respectivement.

  11. Appuyez sur les touches Ctrl+S pour sauvegarder votre Route.

Visualiser le code et exécuter la Route

  1. Cliquez sur l'onglet Code au bas de l'espace de modélisation graphique afin de visualiser le code généré.

    Comme affiché dans le code, une Route de message est construite depuis (from) le "Starter_cTimer_1", configure le corps du message "to cSEDA" par le "cSetBody_1" et l'envoie au cSEDA_2, mappé au "SEDA_consumer_cSEDA_1". Le message est alors envoyé au cVM_2, cDirect_2, mappé au consommateur correspondant, avec un nouveau corps de message. Du côté consommateur, le corps du message depuis (from) chaque consommateur est enregistré par le moniteur correspondant.

  2. Cliquez sur la vue Run pour l'afficher puis cliquez sur le bouton Run pour lancer l'exécution de la Route. Vous pouvez également appuyer sur F6 pour l'exécuter.

    Résultat : Le message envoyé au SEDA_producer, au VM_producer et au Direct_producer est consommé par le composant SEDA_consumer, le composant VM_consumer et le composant Direct_consumer, respectivement. L'échange de messages est déclenché deux fois, comme défini dans la ressource de la Route SetRepeatCount.