
Good afternoon, dear reader.
There is a class of products like
ESB . As mentioned in Wikipedia, this is middleware that provides centralized and unified event-oriented messaging between ... and further along the text. There are not so many examples of such ESBs and they are applied rather narrowly. One of these ESBs is IBM Integration Bus (IIB), up to version 9 was called IBM Message Broker.
A few years ago, I ran into a product like IIB. Trying to understand what kind of animal it is, I discovered that there are very few references to it on the Russian-language Internet. This post will allow you to present this very integration bus in all its glory and help those who are looking for something like me.
')
In Russia, the product is applied quite limited in the banking, insurance and logistics sectors. Exactly where there is a large document flow and high requirements for reliability. Also recently, a large gas project was looking for IIB specialists. How the tire is used there, I do not fully know, 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 a record in its database in the table 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 tick the box about sending to another table of application X. And this is all with the support of transactional and guaranteed delivery. (When one application climbs into the base of another, this is bad, but it happens!) This is what a typical task for the IIB stream looks like.
What is being developed in IIB
One of the most convenient things in IIB is graphical programming. When in the Eclipse environment on the field you pull out from the palette of the node, you connect them together and out, everything works.
It looks like this:

But you usually need to write code too. For the transformation of messages or logic, the primary language is ESQL (Extend SQL). Syntactically similar to PL / SQL, but sharpened to 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:
One convenient way to transform a message from one format to another is Data Mapping:

Very clearly, unlike if you do it in code.
Above, I raised the issue of transforming messages, but before that you need to receive a message. For this, there is a sufficiently large number of Input nodes on the policy block. The most common in my practice are:
- MqInput
- Fileinput
- SOAPInput
- HTTPInput
- TimeoutNotification
To output a message with the result will be about the same set. For individual cases there is an opportunity to write your nodes for input, output or transformation of the message.
Prior to the latest versions, IIB was inextricably linked with IBM MQ, but in later versions of IIB this is no longer required. But some of the functionality without MQ will not work, so the basic scheme of work involves the installation of MQ.
Since this is the first post, I made it an introductory. If there is interest in the topic, I will continue the story.
Useful links:
IBM Knowledge CenterForum