
Boa tarde, querido leitor.
Há uma classe de produtos como o
ESB . Conforme mencionado na Wikipedia, este é um middleware que fornece uma mensagem orientada a eventos centralizada e unificada entre ... e a seguir. Não há muitos exemplos desses ESBs e eles são aplicados de maneira bastante restrita. Um desses ESBs é o IBM Integration Bus (IIB); até a versão 9, era chamado IBM Message Broker.
Alguns anos atrás, me deparei com um produto como o IIB. Tentando entender que tipo de animal é, descobri que há muito poucas referências a ele na Internet de língua russa. Este post apresentará esse pneu de integração em toda a sua glória e ajudará quem estiver procurando por mim.
Na Rússia, o produto é usado de maneira bastante limitada em bancos, seguros e logística. Exatamente onde há um grande fluxo de trabalho e altos requisitos de confiabilidade. Também recentemente, um grande projeto de gás procurava especialistas no IIB. Não sei como o barramento é aplicado lá, mas é possível para telemetria (MQTT).
A essência deste software é conectar N sistemas entre si, mesmo que esses sistemas tenham interfaces e formatos completamente diferentes. Digamos que o sistema X crie uma entrada na tabela em seu banco de dados e, quando aparecer, queremos chamar a API REST de outro aplicativo com JSON dentro de onde os campos do nosso registro serão transmitidos e marcar o envio para outra tabela do aplicativo X. E tudo isso com suporte a transações e entrega garantida. (Quando um aplicativo entra no banco de dados de outro, é ruim, mas acontece!) É assim que parece uma tarefa típica de um fluxo IIB.
O que está sendo desenvolvido no IIB
Uma das coisas mais convenientes no IIB é a programação gráfica. Quando em um ambiente Eclipse, você puxa nós de uma paleta de uma paleta, os conecta e, no meio, tudo funciona.
É assim:

Mas escrever código geralmente também é necessário. Para transformar mensagens ou lógica, o idioma principal é ESQL (Extend SQL). É sintaticamente semelhante ao PL / SQL, mas é aprimorado para o trabalho com estruturas de dados em árvore.
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;
Também há suporte para várias linguagens de programação:
Uma maneira conveniente de transformar uma mensagem de um formato para outro é o Mapeamento de Dados:

Muito claramente, ao contrário do que você faz no código.
Acima, eu toquei na questão da transformação da mensagem, mas antes disso uma mensagem precisa ser recebida. Para fazer isso, há um número bastante grande de nós de entrada no politra. Os mais comuns na minha prática são:
- MqInput
- Fileinput
- SOAPInput
- HTTPInput
- Notificação de tempo limite
Para exibir uma mensagem com o resultado será aproximadamente o mesmo conjunto. Para casos individuais, é possível escrever seus próprios nós para entrada, saída ou transformação de uma mensagem.
Antes das versões mais recentes, o IIB era inextricavelmente vinculado ao IBM MQ, mas nas versões recentes do IIB isso não é mais necessário. Mas parte da funcionalidade não funcionará sem o MQ, portanto, o esquema básico de trabalho envolve a instalação do MQ.
Como este é o primeiro post, eu o tornei introdutório. Se houver interesse no tópico, continuarei a história.
Links úteis:
IBM Knowledge CenterFórum