Een event bus is een gedeeld kanaal waar systemen events publiceren en elk geïnteresseerd systeem zich erop kan abonneren om ze te ontvangen. In plaats van dat het ene systeem het andere rechtstreeks aanroept, meldt het simpelweg dat er iets is gebeurd en laat het wie het aangaat reageren.

Denk aan het omroepsysteem op een vliegveld. Als een vlucht vertraagd is, gaat de mededeling één keer over de speakers, en elke passagier, gate-medewerker en café dat het aangaat hoort het op hetzelfde moment. De omroeper belt niet iedereen apart. Een event bus werkt net zo: een verkoop wordt gepubliceerd en het magazijn, de mailtool en het analysesysteem reageren allemaal op eigen houtje. Deze omroep-stijl is het publish-subscribe-patroon, en de bus is de ruggengraat van event-gestuurde automatisering.

Het grote voordeel is losse koppeling. Systemen hoeven niets van elkaar te weten, alleen van de events. Een nieuwe luisteraar toevoegen betekent nooit dat je het systeem moet aanpassen dat het event in de eerste plaats afvuurde. Zo kan een team een fraudecheck uitrollen die naar hetzelfde betaal-event luistert als de bonmailer al doet, en geen van beide weet van het bestaan van de ander.

Die vrijheid heeft een prijs waar je rekening mee houdt. Is een abonnee offline of stikt hij in een rot bericht, dan kan het event verloren raken of vastlopen, en daarom koppelt een serieuze opzet de bus aan een dead-letter queue om op te vangen wat misgaat. Een event bus past ook bij omroepen, niet bij commando’s: gebruik hem om te zeggen “dit is gebeurd”, niet “doe dit specifieke ding voor mij”.

Bij TopDevs gebruiken we een event bus om de systemen van een klant onafhankelijk op dezelfde events te laten reageren, zodat nieuwe tools er later op aan kunnen sluiten zonder dat iemand de bestaande hoeft om te draaien.