
Buenas tardes, querido lector.
Hay una clase de productos como
ESB . Como se menciona en Wikipedia, este es un middleware que proporciona un mensaje orientado a eventos centralizado y unificado entre ... y en adelante. No hay muchos ejemplos de tales ESB y se aplican de forma bastante limitada. Uno de estos ESB es IBM Integration Bus (IIB), hasta la versión 9 se llamaba IBM Message Broker.
Hace unos años me encontré con un producto como IIB. Tratando de entender qué tipo de animal es, descubrí que hay muy pocas referencias a él en Internet de habla rusa. Esta publicación presentará este neumático de integración en todo su esplendor y ayudará a aquellos que me están buscando.
En Rusia, el producto se usa de forma bastante limitada en banca, seguros y logística. Exactamente donde hay un gran flujo de trabajo y altos requisitos de confiabilidad. También recientemente, un gran proyecto de gas estaba buscando especialistas en IIB. No sé cómo se aplica el autobús allí, pero es posible para telemetría (MQTT).
La esencia de este software es conectar sistemas N entre sí, incluso si estos sistemas tienen interfaces y formatos completamente diferentes. Digamos que el sistema X crea una entrada en la tabla en su base de datos y cuando aparece queremos llamar a la API REST de otra aplicación con JSON dentro de donde se transmitirán los campos de nuestro registro, y poner una marca en el envío a otra tabla de la aplicación X. Y todo esto con soporte de transacciones y entrega garantizada (Cuando una aplicación ingresa a la base de datos de otra, es malo, ¡pero sucede!) Así es como se ve una tarea típica para una transmisión IIB.
Lo que se está desarrollando en IIB
Una de las cosas más convenientes en IIB es la programación gráfica. Cuando en un entorno Eclipse, extrae nodos de una paleta de una paleta, los conecta entre sí y todo funciona.
Se ve así:

Pero generalmente también necesitas escribir código. Para transformar mensajes o lógica, el lenguaje principal es ESQL (Extend SQL). Es sintácticamente similar a PL / SQL, pero se agudiza para trabajar con estructuras de datos de árbol.
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;
También hay soporte para varios lenguajes de programación:
Una forma conveniente de transformar un mensaje de un formato a otro es el mapeo de datos:

Muy claramente, a diferencia de si lo haces en código.
Arriba mencioné el tema de la transformación de mensajes, pero antes de eso, es necesario recibir un mensaje. Para hacer esto, hay un número bastante grande de nodos de entrada en la politra. Los más comunes en mi práctica son:
- MqInput
- Fileinput
- Entrada de SOAP
- HTTPInput
- Notificación de tiempo de espera
Para mostrar un mensaje con el resultado será aproximadamente el mismo conjunto. Para casos individuales, es posible escribir sus propios nodos para la entrada, salida o transformación de un mensaje.
Antes de las últimas versiones, IIB estaba inextricablemente vinculado con IBM MQ, pero en versiones recientes de IIB esto ya no es necesario. Pero parte de la funcionalidad no funcionará sin MQ, por lo que el esquema básico de trabajo implica la instalación de MQ.
Como esta es la primera publicación, la hice introductoria. Si hay interés en el tema, continuaré la historia.
Enlaces utiles:
Centro de conocimiento de IBMForo