O que é uma fila de mensagens?
Uma fila de mensagens é um componente do middleware de sistema de mensagens que permite que aplicativos e serviços independentes troquem informações.
Plano de fundo azul e preto
O que é uma fila de mensagens?

Uma fila de mensagens é um componente das soluções do middleware de sistema de mensagens que permite que aplicativos e serviços independentes troquem informações. As filas de mensagens armazenam "mensagens", que são pacotes de dados que aplicativos criam para o consumo de outros aplicativos, na ordem que são transmitidas até que o aplicativo consumidor possa processá-las. Isso permite que as mensagens aguardem em segurança até que o aplicativo de recebimento esteja pronto, de modo que, se existir um problema com a rede ou o aplicativo de recebimento, as mensagens na fila de mensagens não serão perdidas.

Este modelo, conhecido como sistema de mensagens assíncrono, evita a perda de dados e permite que os sistemas continuem a funcionar se processos ou conexões falharem. Isso permite que os desenvolvedores mantenham processos e aplicativos separados, mantendo suas comunicações autocontidas e orientadas a eventos para tornar a arquitetura mais confiável.

As filas de mensagens estão disponíveis em soluções de sistema de mensagens em várias opções de implementação, incluindo dispositivos físicos otimizados, serviços na cloud, mainframes e como software.

Benefícios

As soluções de enfileiramento de mensagens são amplamente utilizadas em setores e podem oferecer uma matriz de benefícios tanto para desenvolvedores quanto para administradores de sistema, incluindo o que se segue:

  • Entrega de mensagem confiável: o uso de uma fila de mensagens pode assegurar que mensagens críticas aos negócios entre aplicativos não serão perdidas e que elas só serão entregues ao destinatário apenas uma vez. Com este recurso em funcionamento, lógica adicional de deduplicação ou prevenção de perda não é necessária.

  • Conectividade entre aplicativos: algumas soluções de fila de mensagens podem lidar com criptografia de mensagem, transacionalidade e outros aspectos de comunicação entre aplicativos e serviços. Isso simplifica o desenvolvimento de aplicativos e permite que arquiteturas díspares trabalhem em conjunto.

  • Versatilidade: soluções de fila de mensagens podem oferecer suporte a várias linguagens, como Java, Node.js, COBOL, C/C++, Go, .NET, Python, Ruby e C#. Elas também podem oferecer suporte a inúmeras interfaces de programação de aplicativos (APIs) e protocolos, incluindo MQTT, AMQP e REST, bem como outros.

  • Resiliência: o sistema de mensagens assíncrono garante que falhas específicas do aplicativo não irão impactar o sistema. Se um componente no sistema parar, todos os outros podem continuar interagindo com a fila e processando mensagens. Isso diminui a chance de que toda a estabilidade do sistema será impactada pela falha de uma parte dele.

  • Segurança melhorada: uma fila de mensagens pode ser capaz de identificar e autenticar todos as mensagens e, em algumas soluções de fila de mensagens, elas podem ser configuradas para criptografar mensagens em repouso, em trânsito ou de ponta a ponta. Isso pode contribuir para a segurança geral dos aplicativos e/ou da infraestrutura.

  • Transferências de arquivo integradas: algumas soluções de fila de mensagens incluem recursos adicionais, como a capacidade de transferir arquivos. Isso pode ser utilizado como uma alternativa ao FTP nas empresas nas quais tais soluções estão em uso.
Casos de uso

Os ambientes de computação corporativa de hoje são complexos e altamente descentralizados. O sistema de mensagens facilita a integração de aplicativos e serviços em diversas plataformas, fornecendo um backbone de sistema de mensagens compartilhado único, robusto e seguro. Isso protege com relação a perda de dados e garante que os sistemas continuarão a funcionar até mesmo com conectividade instável.

As filas de mensagens são particularmente adequadas para a integração de sistemas de back-end no local com serviços na cloud. Nas arquiteturas na cloud, os aplicativos são geralmente divididos em componentes pequenos e independentes. Isso facilita projetá-los e programá-los, bem como gerenciar seu desempenho. As filas de mensagens permitem que esses aplicativos baseados na cloud desacoplados se comuniquem entre si ou com sistemas no local.

O enfileiramento de mensagens aumenta a resiliência da arquitetura porque as mensagens podem ter persistência. Isso significa que elas são armazenadas em disco até que o serviço recebendo a mensagem confirme o processamento. As filas de mensagens podem ser usadas em cenários que exigem altos níveis de segurança, tolerância a falhas e precisão, como processamento de transações financeiras, reservas de viagens aéreas ou a atualização de registros de cuidados de saúde de pacientes.

As filas de mensagens também podem ser usadas para permitir que aplicativos e sistemas residindo em clouds diferentes (cloud pública ou cloud privada) se comuniquem, mesmo que estejam localizados em países diferentes ou até mesmo em continentes remotos. O uso de uma fila de mensagens aumenta a tolerância a falhas e ela pode ser usada para evitar que dados sejam duplicados ou perdidos em sistemas geográfica e tecnicamente díspares. Como cada serviço dentro do sistema é desacoplado, ou logicamente separado dos demais, cada um deles pode continuar a funcionar se outros serviços ou aplicativos falharem ou pararem.

As filas de mensagens funcionam entre aplicativos díspares, como móveis, IoT e registros de sistema de transação tradicional. Elas também suportam várias plataformas, como máquinas virtuais e contêineres, e podem permitir a integração entre aplicativos legados e as soluções mais recentes de hoje.

Fila de mensagens vs. ...

Fila de mensagens vs. pub/sub
As filas de mensagens usam um padrão de sistema de mensagens ponto a ponto, em que um aplicativo (chamado de o remetente) envia uma mensagem para a fila e outro aplicativo (chamado de o destinatário) recebe a mensagem da fila e a consome. Deve haver um relacionamento um-a-um fortemente acoplado entre o remetente e o destinatário, e cada mensagem deve ser consumida apenas uma vez.

Se seus aplicativos exigem que as mensagens sejam distribuídas a várias partes, podem ser combinadas várias filas de mensagens ou pode ser usado um modelo de publicação/assinatura (pub/sub) de mensagens.

No sistema de mensagens pub/sub, o aplicativo que produz a mensagem é chamado de um publicador e os aplicativos que a consomem são chamados de assinantes. Cada mensagem é publicada em um tópico, e cada aplicativo que assina esse tópico recebe uma cópia de todas as mensagens publicadas nele.

A maioria das soluções de middleware de sistema de mensagens suporta tanto a fila de mensagens (ponto a ponto) quanto os modelos de sistema de mensagens pub/sub.

Fila de mensagens vs. barramento de mensagem
Um barramento de mensagem, que é um tipo de barramento de serviço corporativo ou ESB, permite que serviços onipresentes acessem dados enquanto asseguram que eles permaneçam desacoplados e independentemente funcionais dentro de uma arquitetura de sistema distribuído. Ao empregar um barramento de mensagem, todos os serviços ou aplicativos devem compartilhar tipos de dados comuns, um conjunto de comandos comum e protocolos comuns de comunicação (embora possam ser escritos em linguagens diferentes). Os consumidores podem determinar como utilizar as mensagens.

Se aplicativos desacoplados tiverem que se comunicar por meio de um barramento de mensagem, as mensagens devem ser transformadas de modo que todas sejam do mesmo tipo. Em contraste, as filas de mensagens transportam mensagens, não importa se elas são do mesmo tipo ou de tipos diferentes.

Fila de mensagens vs. serviços da web
Os aplicativos podem se comunicar diretamente por meio de serviços da web ou APIs baseados em protocolos padrão, como SOAP (Simple Object Access Protocol) ou HTTP, em vez de por meio de middleware de sistema de mensagens. Os serviços da web são amplamente utilizados em sistemas distribuídos, são relativamente simples e fáceis de implementar, tornando-os uma alternativa viável para as filas de mensagens em determinados casos de uso e cenários.

Diferentemente das filas de mensagens, no entanto, os serviços da web não podem garantir a entrega de mensagens. Se o servidor ou a conexão falhar, deve-se desenvolver a capacidade de lidar com o erro dentro do cliente. Os serviços da web também carecem de modelos de distribuição pub/sub. O middleware de sistema de mensagens oferece maior tolerância a falhas e melhor capacidade de lidar com tráfego pesado ou picos de atividade.

Para saber mais sobre quando usar APIs, quando usar o sistema de mensagens, ou quando usar ambos, consulte "Uma introdução às APIs e ao sistema de mensagens."

Fila de mensagens vs. bancos de dados
Os bancos de dados podem ser usados como uma alternativa para filas de mensagens em determinadas situações, mas na maioria das vezes eles servem fins diferentes e não são prontamente intercambiáveis. Bancos de dados são mais comumente usados para armazenamento e permitem acesso às mesmas informações repetidamente. As filas de mensagens não podem ser utilizadas para fins de armazenamento. Após uma mensagem ser consumida, ela é excluída da fila.

Projetar uma funcionalidade semelhante à da fila de mensagens em um banco de dados é possível, mas requer muito esforço de programação e conhecimento. Os bancos de dados só podem ser usados para replicar estruturas de fila simples e não são escaláveis para aplicativos maiores. 

Confira "Uma breve visão geral do cenário de banco de dados" para obter mais informações sobre bancos de dados e seus recursos.

Enfileiramento de mensagens como um serviço

O enfileiramento de mensagens é tradicionalmente administrado por equipes dedicadas dentro de TI. Mas a entrega "como um serviço", usando uma fila de mensagens hospedada na cloud, pode permitir que indivíduos ou usuários de linha de negócios (LOB) solicitem mudanças na infraestrutura do sistema de mensagens por conta própria, por meio de um portal, aumentando a agilidade.

O enfileiramento de mensagens como um serviço naturalmente funciona bem dentro de arquiteturas serverless ou de microsserviços, comuns no desenvolvimento nativo de cloud. Uma vez que é oferecido em um modelo de serviço hospedado na cloud, o provedor de cloud lida com todo o fornecimento, a instalação e a manutenção da sua infraestrutura do sistema de mensagens, hospedado na cloud.

Tutoriais

Estes tutoriais ajudarão se você for iniciante no desenvolvimento de aplicativos que se comunicam por meio do IBM MQ:

Estes recursos adicionais irão proporcionar uma visão geral mais abrangente:

Soluções relacionadas
IBM Cloud Pak for Integration

O IBM Cloud Pak for Integration combina a automação da IA com um conjunto abrangente de ferramentas de integração para conectar aplicativos e dados entre qualquer ambiente na cloud e local.                     

Conheça o Cloud Pak for Integration
Soluções em cloud híbrida

Descubra como as soluções de cloud híbrida desenvolvidas com a IBM Cloud podem ajudar a sua organização a migrar para a cloud, modernizar os aplicativos existentes e desenvolver novos aplicativos nativos de cloud.

Conheça as soluções da cloud híbrida
Recursos O que é middleware?

O middleware acelera o desenvolvimento de aplicativos distribuídos, simplificando a conectividade entre aplicativos, componentes de aplicativos e origens de dados de back-end.

O que são APIs de REST?

As APIs de REST são uma maneira flexível e leve de integrar aplicativos e surgiram como o método mais comum para conectar componentes em arquiteturas de microsserviços.

Uma introdução às APIs e ao sistema de mensagens

Saiba quando usar as APIs, quando usar o sistema de mensagens ou quando usar ambos.

Dê o próximo passo

O IBM Cloud Pak for Integration é uma plataforma de integração híbrida que aplica a funcionalidade de automação de IA de circuito fechado para oferecer suporte a vários estilos de integração. A plataforma fornece um conjunto abrangente de ferramentas de integração dentro de uma experiência simples e unificada para conectar aplicativos e dados entre qualquer ambiente na cloud ou no local. Os recursos do Cloud Pak for Integration descobre silos de dados de negócios e ativos como APIs, conecta aplicativos na cloud ou no local, e protege a integridade de dados em trânsito com um sistema de mensagens corporativo.

Conheça o IBM Cloud Pak for Integration