Início
topics
Agentes de mensagens
Um agente de mensagens é um software que permite a comunicação e a troca de informações entre aplicações, sistemas e serviços.
O agente de mensagens realiza isso traduzindo mensagens entre protocolos formais de comunicação. Isso permite que serviços interdependentes “conversem” diretamente entre si, mesmo que tenham sido desenvolvidos em linguagens diferentes ou implementados em plataformas distintas.
Os agentes de mensagens são módulos de software dentro de um middleware de mensagens ou em soluções de middleware orientado a mensagens ("message-oriented middleware" ou MOM). Esse middleware fornece aos desenvolvedores uma maneira padronizada de controlar o fluxo de dados entre os componentes de uma aplicação, possibilitando que foquem na lógica principal. Ele pode atuar como uma camada de comunicação distribuída que permite que aplicações em várias plataformas se comuniquem internamente.
Os agentes de mensagens podem validar, armazenar, direcionar e entregar mensagens aos destinos apropriados. Eles atuam como intermediários entre outras aplicações, permitindo que os remetentes enviem mensagens sem saber onde estão os receptores, se estão ativos ou quantos são. Essa abordagem promove o desacoplamento de processos e serviços nos sistemas.
Para garantir armazenamento confiável de mensagens e entrega assegurada, os agentes de mensagens frequentemente utilizam uma subestrutura ou componente chamado fila de mensagens, que armazena e ordena as mensagens até que as aplicações consumidoras possam processá-las. Em uma fila de mensagens, as mensagens são armazenadas na ordem exata em que foram transmitidas e permanecem na fila até que o recebimento seja confirmado.
Mensagens assíncronas referem-se ao tipo de comunicação entre aplicações que os agentes de mensagens tornam possível. Isso previne a perda de dados valiosos e permite que os sistemas continuem operando mesmo diante de problemas de conectividade intermitente ou latência, comuns em redes públicas. A comunicação assíncrona de mensagens garante que as mensagens sejam entregues uma única vez e na ordem correta em relação às outras mensagens.
Os agentes de mensagens podem incluir gerenciadores de filas para lidar com as interações entre várias filas de mensagens, além de serviços que oferecem funcionalidades de roteamento de dados, tradução de mensagens, persistência e gerenciamento de estado dos clientes.
Saiba como a automação inteligente pode transformar suas operações comerciais em uma vantagem competitiva.
Os agentes de mensagens disponibilizam dois estilos fundamentais de distribuição de mensagens ou modelos de comunicação:
Mensagens ponto a ponto: esse é o padrão de distribuição utilizado em filas de mensagens, com uma relação de um para um entre o remetente e o destinatário da mensagem. Cada mensagem na fila é enviada para apenas um destinatário e é consumida apenas uma vez. O sistema de mensagens ponto a ponto é necessário quando se deve agir sobre uma mensagem apenas uma vez. Exemplos de casos de uso adequados para esse estilo de mensagens incluem processamento de folha de pagamento e transações financeiras. Nesses sistemas, tanto os remetentes quanto os destinatários precisam de uma garantia de que cada pagamento será enviado uma única vez.
Mensagens de publicação/assinatura: neste padrão de distribuição, frequentemente chamado de "pub/sub", o produtor de cada mensagem a publica em um tópico, e vários consumidores se inscrevem nos tópicos para receber as mensagens de seu interesse. Todas as mensagens publicadas em um tópico são distribuídas para todas as aplicações inscritas nele. Este é um método de distribuição no estilo broadcast, onde existe uma relação de um para muitos entre o publicador da mensagem e seus consumidores. Caso uma companhia aérea, por exemplo, compartilhe atualizações sobre horários de pouso ou atrasos de seus voos, várias equipes poderiam usar essas informações: pessoal de solo para manutenção e abastecimento, manipuladores de bagagem, comissários e pilotos que se preparam para o próximo voo, além dos operadores de telas de informações para o público. Um estilo de mensagens pub/sub seria adequado para uso nesse cenário.
As aplicações nativas em nuvem são criadas para aproveitar os benefícios inerentes da computação em nuvem, incluindo flexibilidade, escalabilidade e rápida implementação. Essas aplicações são compostas por componentes pequenos, discretos e reutilizáveis, chamados microsserviços. Cada microsserviço é implementado e pode ser executado de forma independente dos outros. Isso significa que qualquer um deles pode ser atualizado, dimensionado ou reiniciado sem afetar outros serviços do sistema. Muitas vezes empacotados em contêineres, os microservices funcionam em conjunto para compor uma aplicação completa, embora cada um tenha seu próprio stack, incluindo um banco de dados e um modelo de dados que podem ser distintos dos demais.
Os microsserviços devem ter um meio de comunicação entre si para operar em conjunto. Os agentes de mensagens são um dos mecanismos utilizados por eles para criar essa espinha dorsal de comunicação compartilhada.
Os agentes de mensagens são frequentemente usados para gerenciar a comunicação entre sistemas locais e componentes na nuvem em ambientes de nuvem híbrida. O uso de um agente de mensagens oferece maior controle sobre as comunicações entre serviços, garantindo que os dados sejam transmitidos de forma segura, confiável e eficiente entre os componentes de uma aplicação. Os intermediadores de mensagens podem desempenhar um papel semelhante na integração de ambientes multinuvem, facilitando a comunicação entre cargas de trabalho e tempos de execução que operam em diferentes plataformas. Eles também são bem adequados para uso em computação sem servidor, onde serviços individuais hospedados na nuvem são executados sob demanda, conforme cada solicitação.
As APIs REST são comumente usadas para comunicações entre microsserviços. O termo REST ("Representational State Transfer") define um conjunto de princípios e restrições que os desenvolvedores podem seguir ao criar serviços web. Todos os serviços que aderirem a esses princípios poderão se comunicar por meio de um conjunto uniforme de operadores e solicitações sem estado. A Interface de Programação de Aplicativos (API) refere-se ao código subjacente que, ao seguir as regras REST, permite que os serviços se comuniquem entre si.
As APIs REST utilizam o protocolo HTTP ("Hypertext Transfer Protocol") para se comunicar. Como o HTTP é o protocolo de transporte padrão da Internet pública, as APIs REST são amplamente conhecidas, frequentemente utilizadas e altamente interoperáveis. No entanto, como o HTTP é um protocolo de solicitação/resposta, ele é melhor usado em situações que exigem uma solicitação/resposta síncrona. Isso significa que os serviços que fazem solicitações por meio de APIs REST devem ser projetados para esperar uma resposta imediata. Se o cliente que estiver recebendo a resposta estiver inativo, o serviço de envio será bloqueado enquanto aguarda a resposta. A lógica de failover e de gerenciamento de erros deve estar integrada em ambos os serviços.
Os agentes de mensagens viabilizam comunicações assíncronas entre serviços, permitindo que o serviço que envia a mensagem não tenha que aguardar a resposta do serviço destinatário. Isso melhora a tolerância a falhas e a resiliência nos sistemas em que são utilizados. Além disso, o uso de agentes de mensagens facilita a escalabilidade dos sistemas, já que o padrão de mensagens pub/sub consegue acomodar facilmente mudanças na quantidade de serviços. Os agentes de mensagens também monitoram o estado dos consumidores.
Enquanto agentes de mensagens podem operar dois ou mais padrões de mensagens, incluindo filas de mensagens e pub/sub, as plataformas de fluxo de eventos oferecem apenas padrões de distribuição no estilo pub/sub. Desenvolvidas para lidar com altos volumes de mensagens, as plataformas de fluxo de eventos são facilmente escaláveis. Elas são capazes de organizar fluxos de registros em categorias chamadas tópicos e armazená-los por um período de tempo predeterminado. No entanto, ao contrário dos agentes de mensagens, as plataformas de fluxo de eventos não podem garantir a entrega das mensagens nem rastrear quais consumidores as receberam.
Plataformas de fluxo de eventos oferecem mais escalabilidade do que agentes de mensagens, mas possuem menos recursos para garantir a tolerância a falhas (como reenvio de mensagens) e recursos limitadas de roteamento e enfileiramento de mensagens.
Saiba mais sobre arquitetura orientada a eventos.
Um enterprise service bus (ESB) é um modelo arquitetural, às vezes utilizado em arquiteturas orientadas a serviços ("service-oriented architectures" ou SOA) implementadas em empresas. No contexto de um ESB, uma plataforma de software centralizada unifica protocolos de comunicação e formatos de dados em um "idioma comum" que todos os serviços e aplicações da arquitetura podem utilizar. A plataforma pode, por exemplo, converter as requisições recebidas de um protocolo (como XML) para outro (como JSON). Os ESB transformam as cargas úteis de suas mensagens por meio de um processo automatizado. A plataforma de software centralizada também gerencia outras lógicas de orquestração, como conectividade, roteamento e processamento de solicitações.
No entanto, as infraestruturas de ESB são complexas, podem ser difíceis de integrar e custosas de manter. Diagnosticar problemas em ambientes de produção é complicado, a escalabilidade é limitada e o processo de atualização é cansativo.
Os agentes de mensagens são uma alternativa "leve" aos ESBs, oferecendo uma funcionalidade semelhante para comunicação entre serviços de forma mais simples e com menor custo. Eles são ideais para uso em arquiteturas de microsserviços, que se tornaram mais comuns à medida que os ESBs perderam popularidade.
A implementação de agentes de mensagens pode atender a uma ampla variedade de necessidades empresariais em diversos setores e ambientes de computação corporativa. Eles são úteis sempre que é necessária uma comunicação confiável entre aplicações e uma entrega garantida de mensagens.
Agentes de mensagens são frequentemente empregados das seguintes formas:
O IBM MQ oferece recursos de mensagens de nível empresarial que transferem informações entre aplicações de forma eficiente e segura.
Com o IBM® Cloud Pak for Integration, conecte suas aplicações, serviços e dados usando a plataforma de integração mais abrangente disponível no mercado.
Uma fila de mensagens é um componente das soluções de middleware de mensagens que permite a troca de informações entre aplicações e serviços independentes.
O middleware acelera o desenvolvimento de aplicativos distribuídos, simplificando a conectividade entre aplicativos, componentes de aplicativos e fontes de dados de back-end.
A iPaaS é uma solução baseada em nuvem que padroniza e simplifica a integração em ambientes locais e em nuvem.