Producent zdarzeń publikuje event (zwykle niemutowalny rekord z payloadem i metadanymi) do nazwanego kanału (topic, queue, stream) na brokerze. Broker trwale przechowuje zdarzenie i dostarcza je do zarejestrowanych konsumentów według jednej z dwóch strategii: (1) pub/sub — każdy subskrybent dostaje kopię zdarzenia; (2) competing consumers — zdarzenie trafia do dokładnie jednego konsumenta z grupy, umożliwiając load balancing. Konsumenci przetwarzają zdarzenia niezależnie i mogą emitować kolejne zdarzenia, tworząc reaktywny graf przepływu. Wzorce powiązane to event notification (sygnał o zmianie), event-carried state transfer (event niesie pełny stan), event sourcing (event log jako źródło prawdy) i CQRS (rozdział zapisu od odczytu).
Synchroniczne, punkt-do-punktu wywołania RPC tworzą sztywne sprzężenie czasowe i topologiczne między usługami: każdy konsument musi być dostępny w momencie wywołania, a producent musi znać swoich konsumentów. Skala, odporność na awarie i ewolucja systemu cierpią. EDA likwiduje te zależności przez wprowadzenie pośrednika (broker zdarzeń) i komunikacji asynchronicznej.
Komponent wytwarzający zdarzenia w odpowiedzi na zmianę stanu lub akcję użytkownika.
Oficjalna
Pośrednik trwale przechowujący i routujący zdarzenia (Kafka, RabbitMQ, NATS, Pulsar, EventBridge).
Oficjalna
Komponent subskrybujący kanały i reagujący na zdarzenia.
Oficjalna
Logiczna nazwa strumienia zdarzeń, do którego producenci publikują, a konsumenci subskrybują.
Kontrakt opisujący strukturę zdarzenia (Avro, Protobuf, JSON Schema, CloudEvents).
Oficjalna
At-least-once delivery oznacza powtórzenia zdarzeń. Konsumenci muszą obsłużyć duplikaty bez efektów ubocznych.
Asynchroniczna, rozproszona natura utrudnia śledzenie causation chain.
Zmiana schematu zdarzenia może zepsuć starych konsumentów.
Niektóre operacje wymagają silnej spójności; EDA wprowadza opóźnienie propagacji.
Zdarzenie powodujące crash konsumenta blokuje przetwarzanie kolejnych zdarzeń w partycji.
Sformalizowanie wzorca pub/sub w systemach rozproszonych (ISIS Toolkit, Cornell).
Hohpe i Woolf publikują katalog wzorców integracji opartej na komunikatach — fundament EDA w enterprise.
LinkedIn open-source'uje Kafkę — log-based broker definiujący nowoczesne EDA.
Manifest definiujący systemy reaktywne (responsive, resilient, elastic, message-driven) — popularyzacja message-driven jako fundamentu skalowalności.
CNCF standaryzuje format opisu zdarzeń niezależny od dostawcy.
Frameworki agentowe (LangGraph, AutoGen, CrewAI) adoptują event-driven orkiestrację dla multi-agent workflows i streaming inference.
At-most-once / at-least-once / exactly-once. Wpływa na idempotencję konsumentów i koszt operacyjny.
Globalne uporządkowanie vs. per-partition vs. brak gwarancji. Kompromis między uporządkowaniem a paralelizmem.
Czas/rozmiar przechowywania zdarzeń. Log-based brokers (Kafka) trzymają długo, queue-based usuwają po ACK.
Klucz partycjonowania determinuje równoważenie i kolejność.
Strategia kompatybilności (backward / forward / full) dla ewolucji schematu zdarzeń.
Wykonanie jest wyzwalane przez przybycie zdarzenia (reaktywne), nie przez harmonogram ani synchroniczne wywołanie.
Broker routuje zdarzenia do konsumentów na podstawie nazwy topica, kluczy partycji, filtrów lub treści payloadu.
Konsumenci skalują się horyzontalnie przez competing consumers / consumer groups. Partycjonowanie strumieni (np. Kafka partitions) ogranicza paralelizm w obrębie klucza partycji.
EDA to wzorzec architektoniczny niezależny od hardware'u — działa na CPU, w chmurze, na edge.