"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > El encanto de la arquitectura basada en eventos

El encanto de la arquitectura basada en eventos

Publicado el 2025-04-21
Navegar:938

Arquitetura Orientada a Eventos

La arquitectura orientada al evento (AOE) es un modelo de diseño utilizado para desarrollar sistemas que reaccionen a eventos de tiempo real. Este tipo de arquitectura es muy útil en escenarios en los que necesita procesar la información rápidamente, como el comercio electrónico y las aplicaciones bancarias.

¿Qué es un evento?
Un evento es cualquier acción o cambio que ocurra en un sistema. Por ejemplo, cuando un cliente realiza una compra en un sitio, esto puede considerarse un evento. Otros ejemplos incluyen clics en botones o actualizaciones de datos.

¿Cómo funciona AOE?
La arquitectura funciona en función de tres componentes principales:

Los productores de eventos: son ​​las partes del sistema que generan eventos.
Los consumidores de eventos: son ​​responsables de recibir y reaccionar a los eventos.
Event Broker: un intermediario que distribuye los eventos de los productores a los consumidores.
Cuando ocurre un evento, se captura y se envía a un corredor, que lo entrega a servicios o sistemas interesados ​​en este tipo de evento.

beneficios de aoe
Escalabilidad: permite que los sistemas crezcan de manera eficiente, ya que los eventos se pueden procesar de manera asincrónica.
Decapación: los productores y los consumidores no necesitan conocer los detalles del otro, haciendo que el sistema sea más flexible.
Respuestas en tiempo real: ideal para aplicaciones que necesitan reaccionar rápidamente para cambiar.

un ejemplo muy simple en 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");
    }
}

¿Qué sucede en este ejemplo?
productor: El sistema del sistema crea una solicitud y notifica a las partes interesadas.
Consumer: La clase Shipodemail reacciona al evento, enviando un correo electrónico al pedido creado.
Declating: El sistema en residencia no sabe qué hará el consumidor con el evento, solo lo emite.

Sí, como dije fue un ejemplo muy simple, simulando con la comunicación de clase usando oyentes.

Valeeeeu

Declaración de liberación Este artículo se reproduce en: https://dev.to/duzzera/arquitetura-orientada-a-eventos-jmc?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarlo.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3