[vc_row][vc_column][vc_column_text]Vous l’attendiez peut-être avec impatience, voici le premier article du pôle Data !
Nous allons aborder ensemble un sujet de taille puisqu’il s’agit d’Apache ActiveMQ et plus précisément, comment créer dynamiquement et alimenter une Queue sur l’outil Talend !

Commençons par le commencement, ActiveMQ? Késako ?

C’est un broker de message rendant possible la mise en place d’une architecture de type MOM (Message Oriented Middleware), fortement utilisé pour le développement d’applications à couplage faible, l’échange se faisant par transmission ou lecture de message via la couche middleware.

Deux modes d’échange nous sont proposés :

Queue : Echange point à point entre un émetteur et un seul destinataire. Tant que le message n’est pas consommé, il reste disponible.
Topic : Ce n’est autre que le mode publication – subscription. La publication entraîne la réplication du message vers tous les consommateurs abonnées actifs.

Après cette brève introduction, voyons comment mettre en place ActiveMQ sur Talend.

Il y a deux possibilités:
– via Apache Karaf
– ou manuellement sur le Runtime en question.

Nous verrons ici l’installation embarquée dans Karaf.

Installation

Dans la console Karaf, nous allons procéder à l’installation de la feature activemq :

console-karaf-installation-feature-activemq
N’hésitez pas à vérifier les logs après votre installation, pour rappel, log:tail ou log:display.

Nous allons ensuite installer la feature activemq-broker :
feature-activemq_broquer
Si l’installation s’est bien passée, vous devriez être en mesure d’accéder à la console web d’ActiveMQ à l’adresse suivante :

http://server_ip:8040/activemqweb/

Et c’est tout ! Pour ce qui est de la configuration avancée, nous n’allons pas traiter ce sujet, vous pouvez vous référez au lien communiqué à la fin du tutoriel.

Cas pratiques

MQ et Job Designs

Dans un premier temps, nous allons voir comment dynamiquement créer une Queue dans la perspective “Intégration” ( pour ceux ayant une version de Talend antérieure à la 6.2 étant donné que “Médiation” et Intégration ont été fusionnés dans cette dernière ), nous verrons ensuite comment le faire dans la partie Médiation.

prejob activeMQ

Voici donc le résultat sur l’interface web d’ActiveMQ :

Queues

En quelques minutes, nous avons été capables de créer dynamiquement des Queues en fonction d’une donnée.
On pourrait facilement imaginer la mise en place de ce guide dans un projet réel tel que la création à la volée de Queue en fonction d’une valeur présente dans un fichier de données tel qu’un XML !

Et si nous étudions ce cas dans la perspective Médiation ?

MQ et Routes

Nous avons vus précédemment la possibilité de créer une Queue dynamiquement en fonction d’un champ généré aléatoirement.
Reprenons le même principe depuis un fichier XML en appliquant un peu de XPath pour créer la Queue selon la valeur d’un attribut.

Voici un fichier XML, contenant deux attributs, system et flowType

fichier-xml-system-et-flowtype

Regardons ensemble, comment, à partir de ses attributs, nous pouvons, à la volée créer une Queue qui dépendra de la valeur qu’ils contiennent.
cmqconnectionfactory
Toujours sur l’interface web d’ActiveMQ, dans le contenu de la Queue que nous venons de créer, nous pouvons voir que les valeurs des attributs sont effectivement les valeurs que nous retrouvons dans le nom :
tableau-de-bord-activemq

Vous êtes maintenant capable d’échanger via une architecture MOM et de façon dynamique!
Pour plus d’informations sur ActiveMQ, je vous recommande ActiveMQ In Action qui couvre de façon très complète l’ensemble des possibilités offertes par cet outil ( basculement, persistance, etc…).
Concernant l’utilisation du Simple Language Camel et du Recipient List Pattern, vous trouverez des informations très précieuses dans ces deux ouvrages :
Camel In Action ( à savoir: la version deux de ce livre est prévue pour début 2017) et Enterprise Integration Pattern !

A très bientôt pour un prochain tutoriel ![/vc_column_text][/vc_column][/vc_row][vc_row][vc_column width= »1/4″ css= ».vc_custom_1475754884729{padding-top: 10px !important;padding-bottom: 10px !important;background-color: #f9f9f9 !important;border-radius: 3px !important;} »][vc_custom_heading text= »Article créé par: » font_container= »tag:h3|text_align:center » use_theme_fonts= »yes »][vc_single_image image= »17610″ img_size= »100×100″ alignment= »center » style= »vc_box_circle_2″ css= ».vc_custom_1475754690954{padding-top: 20px !important;} »][vc_custom_heading text= »Kevin » font_container= »tag:h4|text_align:center » use_theme_fonts= »yes »][vc_custom_heading text= »Consultant Data Intelligence » font_container= »tag:h5|font_size:12px|text_align:center » use_theme_fonts= »yes »][/vc_column][/vc_row]