IBM Integration Bus and what it eats
Good afternoon, dear reader.
There is a class of products like ESB . As mentioned on Wikipedia, this is middleware that provides a centralized and unified event-oriented messaging between ... and hereinafter. There are not many examples of such ESBs and they are applied rather narrowly. One of these ESBs is IBM Integration Bus (IIB), up to version 9 it was called IBM Message Broker.
A few years ago I came across a product like IIB. Trying to understand what kind of animal it is, I found that there are very few references to it on the Russian-speaking Internet. This post will introduce this very integration tire in all its glory and help those who are looking for me.
In Russia, the product is used quite limitedly in banking, insurance and logistics. Exactly where there is a large workflow and high requirements for reliability. Also recently, a large gas project was looking for specialists in IIB. I don’t know how the bus is applied there, but it is possible for telemetry (MQTT).
The essence of this software is to connect N systems with each other, even if these systems have completely different interfaces and formats. Let's say the X system creates an entry in the table in its database and when it appears we want to call the REST API of another application with JSON inside where the fields of our record will be transmitted, and put a mark on sending to another table of the X application. And that’s all with transaction support and guaranteed delivery. (When one application creeps into the database of another, it’s bad, but it happens!) This is what a typical task for a IIB stream looks like.
What is being developed in IIB
One of the most convenient things in IIB is graphical programming. When in an Eclipse environment you pull nodes from a palette from a palette, connect them together and in between, everything works.
It looks like this:
But you usually need to write code too. To transform messages or logic, the main language is ESQL (Extend SQL). It is syntactically similar to PL / SQL, but is sharpened for work with tree data structures.
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;
There is also support for several programming languages:
- Java
- .NET
- Php
One of the convenient ways to transform a message from one format to another is Data Mapping:
Very clearly, unlike if you do it in code.
Above I touched on the issue of message transformation, but before that a message needs to be received. For this, there is a fairly large number of Input nodes on the politra. The most common in my practice are:
- MqInput
- Fileinput
- SOAPInput
- HTTPInput
- Timeoutnotification
To display a message with the result will be approximately the same set. For individual cases, it is possible to write your own nodes for input, output or transformation of a message.
Prior to the latest versions, IIB was inextricably linked with IBM MQ, but in recent versions of IIB this is no longer required. But part of the functionality will not work without MQ, so the basic scheme of work involves the installation of MQ.
Since this is the first post, I made it introductory. If there is interest in the topic, I will continue the story.
Useful links:
IBM Knowledge Center
Forum