"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > O charme da arquitetura orientada por eventos

O charme da arquitetura orientada por eventos

Postado em 2025-04-21
Navegar:137

Arquitetura Orientada a Eventos

A Arquitetura Orientada a Eventos (AOE) é um modelo de design usado para desenvolver sistemas que reagem a eventos em tempo real. Esse tipo de arquitetura é muito útil em cenários onde é necessário processar informações rapidamente, como em e-commerces e aplicativos bancários.

O que é um evento?
Um evento é qualquer ação ou mudança que ocorre em um sistema. Por exemplo, quando um cliente faz uma compra em um site, isso pode ser considerado um evento. Outros exemplos incluem cliques em botões ou atualizações de dados.

Como funciona a AOE?
A arquitetura funciona com base em três componentes principais:

Produtores de eventos: São as partes do sistema que geram eventos.
Consumidores de eventos: São responsáveis por receber e reagir aos eventos.
Corretor de eventos: Um intermediário que distribui os eventos dos produtores para os consumidores.
Quando um evento ocorre, ele é capturado e enviado para um corretor, que o entrega aos serviços ou sistemas interessados nesse tipo de evento.

Benefícios da AOE
Escalabilidade: Permite que sistemas cresçam de forma eficiente, já que eventos podem ser processados de forma assíncrona.
Desacoplamento: Os produtores e consumidores não precisam conhecer os detalhes uns dos outros, tornando o sistema mais flexível.
Respostas em tempo real: Ideal para aplicações que precisam reagir rapidamente a mudanças.

Um exemplo muito simples em Java OOP ☕:

// Definição do evento
class PedidoCriadoEvent {
    private String idPedido;

    public PedidoCriadoEvent(String idPedido) {
        this.idPedido = idPedido;
    }

    public String getIdPedido() {
        return idPedido;
    }
}

// Interface para o consumidor (listener)
interface PedidoCriadoListener {
    void onPedidoCriado(PedidoCriadoEvent event);
}

// Produtor do evento
class SistemaDePedidos {
    private PedidoCriadoListener listener;

    public void registrarListener(PedidoCriadoListener listener) {
        this.listener = listener;
    }

    public void criarPedido(String idPedido) {
        System.out.println("Pedido criado com ID: "   idPedido);
        if (listener != null) {
            listener.onPedidoCriado(new PedidoCriadoEvent(idPedido));
        }
    }
}

// Consumidor do evento
class EnvioDeEmail implements PedidoCriadoListener {
    @Override
    public void onPedidoCriado(PedidoCriadoEvent event) {
        System.out.println("Enviando e-mail para o pedido: "   event.getIdPedido());
    }
}

// Simulação
public class Main {
    public static void main(String[] args) {
        SistemaDePedidos sistema = new SistemaDePedidos();
        EnvioDeEmail envioDeEmail = new EnvioDeEmail();

        sistema.registrarListener(envioDeEmail);
        sistema.criarPedido("12345");
    }
}

O que acontece neste exemplo?
Produtor: A classe SistemaDePedidos cria um pedido e notifica os interessados.
Consumidor: A classe EnvioDeEmail reage ao evento, enviando um e-mail para o pedido criado.
Desacoplamento: O SistemaDePedidos não sabe o que o consumidor fará com o evento, apenas o emite.

Sim, como eu disse foi um exemplo bem simples, simulando com a comunicação entre classes usando Listeners.

Valeeeeu

Declaração de lançamento Este artigo é reproduzido em: https://dev.to/duzera/arquiteTura-orientada-a-eventos-jmc?1 Se houver alguma violação, entre em contato com [email protected] para excluí-lo.
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3