Workshop RabbitMQ + BDD

De RabbitMQ workshop wordt aangeboden via GitHub Classrooms. Je krijgt automatisch toegang tot de workshop repository wanneer de assignment wordt geopend.

Les 1: RabbitMQ Fundamentals

Wat is RabbitMQ?

RabbitMQ is een open-source message broker die het Advanced Message Queuing Protocol (AMQP) implementeert. Het fungeert als een tussenpersoon voor berichten tussen verschillende services in een gedistribueerd systeem.

Waarom Message Queuing?

In traditionele monolithische applicaties communiceren componenten direct met elkaar via functie-aanroepen. In microservices architecturen is dit anders:

  • Loose coupling: Services hoeven niet direct van elkaar af te weten
  • Asynchrone verwerking: Services kunnen onafhankelijk van elkaar werken
  • Betrouwbaarheid: Berichten worden opgeslagen en kunnen opnieuw worden verwerkt
  • Schaalbaarheid: Services kunnen onafhankelijk worden geschaald

AMQP Componenten

RabbitMQ gebruikt het AMQP-protocol met de volgende kerncomponenten:

  • Producer: Service die berichten verstuurt
  • Exchange: Router die berichten ontvangt en doorstuurt naar queues
  • Queue: Buffer waar berichten worden opgeslagen
  • Consumer: Service die berichten verwerkt
  • Binding: Regel die bepaalt welke berichten naar welke queue gaan

Exchange Types

RabbitMQ ondersteunt verschillende soorten exchanges:

  1. Direct Exchange: Routeert op basis van exacte routing key match
  2. Topic Exchange: Routeert op basis van wildcard patterns
  3. Fanout Exchange: Stuurt berichten naar alle gebonden queues
  4. Headers Exchange: Routeert op basis van message headers

Real-world Analogie

RabbitMQ werkt als een postkantoor:

  • Producer = Afzender die een brief post
  • Exchange = Postkantoor dat brieven sorteert
  • Queue = Postvak waar brieven wachten
  • Consumer = Ontvanger die brieven ophaalt
  • Routing Key = Postcode die bepaalt waar de brief heen gaat

Vervolg: BDD en Cross‑Service Testing

Deze workshop heeft twee delen. In week 5 volgt een verdiepende les door Rody over BDD en cross‑service testing. Alle BDD‑theorie, voorbeelden en opdrachten staan in:

Quiz

Test je '101 kennis' over RabbitMQ met deze korte multiple choice quiz:

Leerdoelen

RabbitMQ Leerdoelen

  • Je kunt uitleggen wat een message broker is en de rol beschrijven van RabbitMQ in verbeteren van 'loose coupling' van systemen.
  • Je kunt het verschil beschrijven tussen verschillende messaging patterns, zoals work queues, publish-subscribe, routing en topics en gegeven een situatie/toepassing aangeven welke het geschiktst is.
  • Je kunt de componenten van het AMQP-protocol beschrijven, zoals exchanges, queues, bindings en routing keys, en uitleggen hoe ze samenwerken in RabbitMQ.
  • Je kunt uitleggen hoe RabbitMQ berichten routeert op basis van binding keys en routing keys.
  • Je kunt van de verschillende types exchanges in RabbitMQ in ieder geval fanout uitleggen en bijbehorende use-cases benoemen.
  • Je kunt een real-world analogie geven voor de werking van RabbitMQ, bijvoorbeeld door het te vergelijken met het sorteer- en bezorgproces van een pakketbezorgdienst.

BDD Leerdoelen

  • Je kunt uitleggen wat BDD is en hoe het verschilt van traditionele test-driven development
  • Je kunt Gherkin syntax gebruiken om user stories te beschrijven
  • Je kunt BDD scenarios schrijven in Given-When-Then format
  • Je begrijpt hoe BDD bijdraagt aan betere communicatie tussen stakeholders
  • Je kent de relatie van BDD met TDD, DDD en Agile/DevOps
  • Je kent de BDD three amigo's, en de 3 stappen van het iteratieve BDD proces
  • Je kunt de verhouding uitleggen tussen BDD test scenario's, test cases en suites met user stories en acceptatiecriteria uit Scrum
  • Je kent de test pyramide, het belang van de verschillende soorten testen hierin en de link met BDD
  • Je begrijpt waarom de traditionele test pyramid niet meer geschikt is voor microservices architecturen
  • Je kunt BDD gebruiken om cross-service communicatie via message queues te testen

Bronnen

Last change: 2025-10-23