Pomagają rozsprzęgać moduły: jeden moduł publikuje event („OrderPlaced”), a inne reagują bez ścisłych zależności. Pułapki: decyzja sync vs async, niewrzucanie ciężkiej pracy do tej samej transakcji oraz niezawodność i idempotencja handlerów (event może się powtórzyć).