October DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsWindows FixRecommendedWindows errors stealing your time? Find the fix fastScan stability, cleanup and performance issues.Fix NowOctober DealsAmazon USDeal season is back - check today's better picksAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
World desk10 min

Comunicação de microserviços em arquiteturas Spring Boot: chamadas síncronas, eventos e integração de IA com Spring AI

HTTP síncrono, eventos e Spring AI resolvem problemas diferentes em microserviços Spring Boot. Veja quando cada um se encaixa, como clientes e bindings funcionam e quais decisões dependem do contexto do sistema.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Em microserviços Spring Boot, nenhum mecanismo de comunicação serve para todos os casos. Chamadas HTTP síncronas são adequadas quando quem chama precisa da resposta para continuar. Eventos publicados em um broker são adequados quando o produtor pode comunicar um fato e seguir sem esperar que cada consumidor conclua o trabalho. Spring AI ocupa outro plano: ele integra um serviço a modelos de linguagem, a componentes de apoio como vector stores e às ferramentas da própria aplicação. Ele pode conviver com HTTP e eventos, mas não substitui nenhum dos dois.

Este guia explica o que cada abordagem oferece, onde costuma se encaixar e quais decisões continuam dependendo do contexto do seu sistema.

As an Amazon Associate I earn from qualifying purchases.

Três formas de comunicar, três perguntas diferentes

A escolha começa com uma pergunta simples: o fluxo precisa de uma resposta antes de continuar? Se sim, o caminho é HTTP síncrono. Se outros serviços podem reagir depois, eventos entram na conversa. Spring AI responde a outra pergunta: como este serviço conversa com um modelo de linguagem e, se necessário, permite que o modelo solicite funções da aplicação.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Eixo HTTP síncrono Eventos via broker Spring AI dentro do serviço
Forma de interação O chamador envia uma requisição e espera a resposta. O produtor publica uma mensagem; consumidores reagem conforme seus bindings. O serviço chama um modelo de linguagem e pode expor ferramentas da aplicação.
Dependência no momento da chamada Chamador e serviço chamado precisam estar disponíveis para a interação imediata. Produtor e consumidor podem ficar desacoplados no tempo, conforme o broker e a configuração. Depende do provedor de modelo escolhido e da disponibilidade dele.
APIs Spring citadas na documentação RestClient, WebClient, HTTP Service Clients; OpenFeign em sistemas existentes. Spring Cloud Stream, StreamBridge, com Kafka e RabbitMQ como brokers citados. ChatClient, Model API, advisors, vector stores e tool calling.
Uso típico Consultar dados, validar uma regra ou executar uma operação cujo resultado o chamador precisa. Informar que algo aconteceu e permitir que outros serviços reajam. Gerar ou resumir texto, responder com contexto recuperado ou escolher uma ferramenta a executar.

Esses eixos descrevem modos de interação, não resultados de medição. A documentação oficial citada aqui não traz números comparativos de latência ou throughput entre as três abordagens, e este texto não atribui valores a essa comparação.

Chamadas síncronas por HTTP

Uma chamada síncrona faz o chamador esperar a resposta antes de seguir. É o modelo mais simples de entender e depurar, e também o que mais expõe o chamador às falhas do destino. Em Spring, há três clientes documentados para esse estilo, além de uma API legada e de um cliente declarativo em fase de transição.

RestClient: cliente síncrono com API fluente

A documentação de REST Clients do Spring Framework, na versão 7.0.9 citada aqui, descreve o RestClient com a frase “synchronous client with a fluent API” (cliente síncrono com API fluente). Para código de execução bloqueante, ele é o ponto de partida. Um exemplo mínimo de consulta:

RestClient pedidosClient = RestClient.create(urlPedidos);nnPedido pedido = pedidosClient.get()n        .uri("/pedidos/{id}", pedidoId)n        .retrieve()n        .body(Pedido.class);

Três cuidados práticos: a URL base deve vir de configuração externa, não de um literal espalhado pelo código; o método retrieve() converte respostas 4xx e 5xx em exceção, então o tratamento de erro precisa ser explícito; e os timeouts devem ser definidos na configuração do cliente, não deixados ao padrão do ambiente.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

WebClient: cliente reativo e não bloqueante

Na mesma documentação, o WebClient aparece como cliente reativo e não bloqueante. A escolha depende do estilo de execução da aplicação. Trocar de cliente em uma aplicação construída sobre código bloqueante não traz desempenho superior automaticamente, e a migração pode obrigar a repensar o fluxo que chama a rede. Se a aplicação já é reativa, o WebClient se encaixa no modelo; se não é, o RestClient tende a ser o caminho de menor atrito.

HTTP Service Clients: contrato declarado em interfaces

Os HTTP Service Clients geram proxies a partir de interfaces anotadas. O contrato HTTP fica declarado em um único lugar, e o código que o usa chama um método Java comum:

public interface PedidoClient {nn    @GetExchange("/pedidos/{id}")n    Pedido buscar(@PathVariable String id);n}

A criação do proxy a partir dessa interface é descrita na mesma documentação de REST Clients. Este é também o destino sugerido para quem usa OpenFeign, como mostra a seção seguinte.

RestTemplate: legado e depreciado

A documentação identifica o RestTemplate como cliente síncrono legado e o marca como depreciado em favor do RestClient. Ele ainda aparece em muitos sistemas existentes. Em código novo, a orientação oficial aponta para o RestClient. Em código antigo, a troca deve ser tratada como migração planejada, com testes sobre o comportamento de erro e de serialização.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

OpenFeign em sistemas que já o usam

Spring Cloud OpenFeign oferece clientes REST declarativos e integração com recursos do Spring Cloud, incluindo LoadBalancer e CircuitBreaker. A documentação da versão 5.0.3 considera o projeto feature-complete e sugere migrar para Spring HTTP Service Clients. Essa é a orientação atual do projeto para novas decisões. Ela não significa que OpenFeign deixou de funcionar: sistemas que dependem dele podem continuar usando-o. A migração deve ser avaliada caso a caso, com atenção à compatibilidade do release train do Spring Cloud adotado pelo projeto.

Onde a chamada síncrona pesa

  • Cadeias de chamadas. Se o serviço A chama B, e B chama C, a lentidão ou a indisponibilidade de C aparece como atraso ou falha em A e em B. Essa é uma implicação arquitetural geral, não um número medido.
  • Timeouts e retries. Cada chamada precisa de limite de tempo explícito. Repetir uma chamada que altera estado sem idempotência pode duplicar o efeito, por exemplo gerando duas cobranças.
  • Recursos ocupados. Em modelo bloqueante, a thread do chamador fica presa enquanto aguarda a resposta.

Eventos com Spring Cloud Stream

Spring Cloud Stream fornece um modelo orientado a eventos com integração a brokers como Kafka e RabbitMQ. Em vez de chamar diretamente outro serviço, o produtor envia uma mensagem a um destino, e os consumidores reagem por meio de bindings configurados. A referência oficial está no Spring Cloud Reference Guide em PDF.

Enviando eventos com StreamBridge

StreamBridge envia dados a um output binding sem exigir que toda a aplicação seja escrita em torno de bindings de stream. Por isso ele funciona bem como ponte para código existente:

@Servicenpublic class PedidoEventos {nn    private final StreamBridge streamBridge;nn    public PedidoEventos(StreamBridge streamBridge) {n        this.streamBridge = streamBridge;n    }nn    public void pedidoCriado(Pedido pedido) {n        streamBridge.send("pedidosCriados-out-0", pedido);n    }n}

O destino físico é definido na configuração, associado ao nome do binding usado no código:

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
spring:n  cloud:n    stream:n      bindings:n        pedidosCriados-out-0:n          destination: pedidos.criados

O binder do broker escolhido, Kafka ou RabbitMQ por exemplo, precisa estar no classpath. Configurações específicas de cada binder são feitas à parte, conforme a documentação desse binder.

Consumindo com bindings de função

No lado do consumidor, um bean do tipo Consumer<Pedido> recebe cada mensagem. O nome do binding de entrada e o grupo de consumo ficam na configuração:

@Beannpublic Consumer<Pedido> pedidosCriados() {n    return pedido -> faturamento.registrar(pedido);n}
spring:n  cloud:n    stream:n      bindings:n        pedidosCriados-in-0:n          destination: pedidos.criadosn          group: faturamento

Instâncias do mesmo serviço com o mesmo group dividem as mensagens entre si, enquanto grupos diferentes recebem, cada um, sua cópia do evento. O detalhe de particionamento e de entrega varia conforme o broker; confirme-o no binder em uso.

O que a mensageria não resolve sozinha

  • Contrato do evento. Nome, campos, versão e regras de compatibilidade precisam ser definidos entre produtor e consumidores. Alterar um campo sem plano quebra quem já consome o evento.
  • Idempotência. Conforme a semântica de entrega configurada, o mesmo evento pode ser processado mais de uma vez. O consumidor precisa tolerar essa repetição, por exemplo registrando os identificadores já processados.
  • Garantias de entrega. Elas dependem do broker e do binder. Não as presuma: leia a documentação do binder escolhido antes de desenhar o fluxo.
  • Falhas. Defina retry e o tratamento de mensagens que não podem ser processadas (dead-letter handling). Quando a gravação em banco e a publicação do evento precisam ocorrer de forma consistente, avalie o transactional outbox.
  • Rastreabilidade. Um fluxo que atravessa o broker precisa de identificador de correlação propagado nas mensagens, para que um pedido possa ser acompanhado de ponta a ponta.

Integração de IA com Spring AI

Spring AI não é um mecanismo de comunicação entre microserviços. Ele é a camada pela qual um serviço Spring Boot acessa modelos de linguagem e componentes de apoio. A documentação da API do Spring AI, na versão 2.0.1 citada aqui, descreve abstrações para modelos, ChatClient, vector stores, advisors, tool calling, MCP, auto-configuração e starters Spring Boot. As APIs de modelo suportam chamadas síncronas e streaming.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Resposta completa ou streaming

Uma resposta completa é mais simples de validar e de armazenar. Streaming entrega partes da resposta conforme ela é gerada, o que muda o tratamento de erros: uma falha pode ocorrer depois que parte do texto já foi enviada ao usuário. A escolha depende do caso de uso.

Tool calling: o modelo solicita, a aplicação executa

Tool calling é o ponto em que a integração de IA mais se aproxima dos microserviços, porque a ferramenta costuma ser uma operação real da aplicação, como consultar pedidos ou abrir um chamado. A documentação de Tool Calling deixa claro que o modelo não recebe acesso direto às APIs do serviço. Ele pode solicitar a chamada, mas a aplicação executa a ferramenta e devolve o resultado. O texto oficial diz: “The application is responsible for executing the tool and returning the result.” Em português: a aplicação é responsável por executar a ferramenta e retornar o resultado.

  1. A aplicação declara quais ferramentas o modelo pode solicitar, com descrição e parâmetros.
  2. Durante a conversa, o modelo solicita uma ferramenta e propõe os argumentos.
  3. A aplicação valida os argumentos e verifica se o usuário autenticado pode executar aquela ação.
  4. A aplicação executa a operação, por exemplo chamando outro serviço via RestClient ou publicando um comando como evento.
  5. O resultado volta ao modelo, que o usa para compor a resposta final.

ChatClient pode coordenar esse ciclo com ToolCallingAdvisor. Trate cada ferramenta como um endpoint exposto: com escopo mínimo, validação de entrada e registro de auditoria.

Advisors, memória, RAG e observabilidade

Advisors encapsulam padrões reutilizáveis, como memória de conversa, RAG e tool calling. A documentação de Advisors explica esses padrões. A seção de Observability descreve métricas e tracing para componentes centrais do Spring AI, o que permite acompanhar chamadas ao modelo junto com o restante do fluxo.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Fluxos de IA que demoram: aceitar, publicar e processar

Algumas respostas de modelo levam mais tempo do que um chamador HTTP deveria esperar. Uma composição possível combina as duas formas anteriores:

  1. O endpoint HTTP valida a requisição, cria um identificador de tarefa e responde de imediato.
  2. A tarefa é publicada como evento.
  3. Um consumidor chama o modelo com Spring AI, aplicando as regras de ferramentas e de dados descritas acima.
  4. O resultado é gravado, e o cliente o consulta pelo identificador ou recebe uma notificação por outro canal.

Essa é uma composição arquitetural possível, não um fluxo oficial pronto. Ela herda os cuidados de eventos, como idempotência e retry, e exige definir o que acontece quando o modelo demora ou falha.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Decisões que dependem do seu contexto

Essas perguntas não têm resposta universal. Responda-as para o fluxo concreto antes de escolher o mecanismo:

  • O chamador precisa do resultado para concluir a própria operação, ou só precisa que o fato seja registrado?
  • Quantos serviços reagem ao mesmo fato, e algum deles pode ficar indisponível por horas sem que o produtor seja bloqueado?
  • A operação é idempotente? Se não for, retry e reenvio precisam de desenho próprio, seja em HTTP ou em evento.
  • Quanta latência o usuário final tolera? Se a resposta precisa ser imediata, o processamento assíncrono exige mudança na experiência, não apenas no código.
  • Quais dados entram no prompt, e o provedor escolhido aceita esse tratamento? Políticas de dados e custos devem ser conferidas diretamente com o fornecedor do modelo.
  • Quais ferramentas o modelo pode acionar, e quem pode autorizar cada uma delas?

Versões e compatibilidade antes de implementar

As referências oficiais citadas neste texto correspondem a Spring Framework 7.0.9 (REST Clients), Spring Cloud OpenFeign 5.0.3 e Spring AI 2.0.1. As páginas de documentação mudam com novas versões, e a documentação citada não estabelece uma matriz de compatibilidade entre Spring Boot, o Spring Cloud release train e o Spring AI. Antes de montar um projeto, escolha uma combinação, confirme-a nas notas de versão de cada projeto e fixe as versões no arquivo de build. Os trechos de código acima mostram APIs e configurações; não são um projeto completo testado em uma versão específica.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The Bottom Line

Nenhuma das três abordagens é superior em abstrato. Use chamadas HTTP síncronas quando o fluxo depende de uma resposta imediata, eventos quando um fato pode ser reagido depois por outros serviços, e Spring AI como camada de integração com modelos e ferramentas no serviço que precisa dela. A decisão depende de quais partes do fluxo exigem resposta imediata e quais podem ser processadas depois.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
Crashes, No Sound, or Screen Glitches?Free driver scan
Windows Errors? Fix Them Before They SpreadFree repair scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.