
Bonjour, cher lecteur.
Il existe une classe de produits comme
ESB . Comme mentionné sur Wikipédia, il s'agit d'un middleware qui fournit une messagerie centralisée et unifiée orientée événements entre ... et ci-après. Il n'y a pas beaucoup d'exemples de tels ESB et ils sont appliqués de manière assez étroite. L'un de ces ESB est IBM Integration Bus (IIB), jusqu'à la version 9, il s'appelait IBM Message Broker.
Il y a quelques années, je suis tombé sur un produit comme IIB. En essayant de comprendre de quel type d'animal il s'agit, j'ai trouvé qu'il y avait très peu de références à ce sujet sur Internet russophone. Ce billet présentera ce pneu très intégré dans toute sa splendeur et aidera ceux qui me recherchent.
En Russie, le produit est utilisé de manière assez limitée dans la banque, l'assurance et la logistique. Exactement là où il existe un flux de travail important et des exigences élevées en matière de fiabilité. Récemment également, un grand projet gazier cherchait des spécialistes en IIB. Je ne sais pas comment le bus y est appliqué, mais c'est possible pour la télémétrie (MQTT).
L'essence de ce logiciel est de connecter N systèmes entre eux, même si ces systèmes ont des interfaces et des formats complètement différents. Supposons que le système X crée une entrée dans la table de sa base de données et lorsqu'il apparaît, nous voulons appeler l'API REST d'une autre application avec JSON à l'intérieur où les champs de notre enregistrement seront transmis, et mettre une marque sur l'envoi à une autre table de l'application X. Et tout cela avec le support des transactions et livraison garantie. (Quand une application se glisse dans la base de données d'une autre, c'est mauvais, mais ça arrive!) Voilà à quoi ressemble une tâche typique pour un flux IIB.
Ce qui est développé dans IIB
L'une des choses les plus pratiques dans IIB est la programmation graphique. Lorsque, dans un environnement Eclipse, vous extrayez des nœuds d'une palette, les connectez entre eux et entre les deux, tout fonctionne.
Cela ressemble à ceci:

Mais vous devez généralement aussi écrire du code. Pour transformer les messages ou la logique, le langage principal est ESQL (Extend SQL). Il est syntaxiquement similaire à PL / SQL, mais est affiné pour travailler avec des structures de données arborescentes.
CREATE PROCEDURE CopyMessageHeaders() BEGIN DECLARE I INTEGER 1; DECLARE J INTEGER; SET J = CARDINALITY(InputRoot.*[]); WHILE I < J DO SET OutputRoot.*[I] = InputRoot.*[I]; SET I = I + 1; END WHILE; END;
Il existe également un support pour plusieurs langages de programmation:
Le mappage de données est un moyen pratique de transformer un message d'un format à un autre:

Très clairement, contrairement à si vous le faites en code.
Ci-dessus, j'ai abordé la question de la transformation des messages, mais avant cela, un message doit être reçu. Pour cela, il y a un assez grand nombre de nœuds d'entrée sur la politra. Les plus courants dans ma pratique sont:
- MqInput
- Fileinput
- SOAPInput
- HTTPInput
- Délai d'expiration
Pour afficher un message avec le résultat sera approximativement le même ensemble. Pour des cas individuels, il est possible d'écrire vos propres nœuds pour l'entrée, la sortie ou la transformation d'un message.
Avant les dernières versions, IIB était inextricablement lié à IBM MQ, mais dans les versions récentes de IIB, cela n'est plus nécessaire. Mais une partie de la fonctionnalité ne fonctionnera pas sans MQ, donc le schéma de travail de base implique l'installation de MQ.
Puisque c'est le premier article, je l'ai fait en introduction. S'il y a un intérêt pour le sujet, je continuerai l'histoire.
Liens utiles:
IBM Knowledge CenterLe forum