Evenementgestuurde architectuur (EDA) is een benadering waarbij systeemcomponenten communiceren via evenementen: berichten over opgetreden wijzigingen of acties. Het systeem bestaat uit evenementgeneratoren (producers), verwerkers (consumers) en een berichtenbus (message bus, broker) die evenementen levert.
EDA maakt het mogelijk om flexibel schaalbare, losgekoppelde systemen te creëren. Wijzigingen in één component vereisen geen aanpassing van andere: alleen de generatie en verwerking van evenementen.
Voorbeeldcode (generatie en verwerking van evenementen in Node.js):
const EventEmitter = require('events'); class MyEmitter extends EventEmitter {} const emitter = new MyEmitter(); // Evenementverwerker emitter.on('userCreated', (user) => { console.log('Gebruiker aangemaakt:', user); }); // Generatie van een evenement emitter.emit('userCreated', { id: 1, name: 'Ivan' });
Belangrijkste kenmerken:
Is EDA het tegenovergestelde van microservicesarchitectuur?
Nee, dat is het niet. Microservices gebruiken vaak EDA voor communicatie tussen diensten.
Kan EDA alleen met berichtenbrokers worden gebruikt?
Niet noodzakelijk. Lokale evenementen (bijvoorbeeld via het Observer-patroon) implementeren ook EDA, maar brokers maken het mogelijk om gedistribueerde systemen te bouwen.
Garandeert EDA de onveranderlijkheid van gegevens?
Nee. EDA gaat over de interactie tussen componenten; weerstand tegen herverwerking (idempotentie) en gegevensconsistentie moet expliciet worden gerealiseerd.