Wat is RabbitMQ?

RabbitMQ is een open-source message broker die berichten tussen applicaties ontvangt, routeert, tijdelijk opslaat en betrouwbaar aflevert, zodat systemen asynchroon en losjes gekoppeld met elkaar kunnen communiceren. De broker spreekt van oudsher AMQP 0-9-1 en ondersteunt daarnaast AMQP 1.0, MQTT, STOMP en een eigen streamprotocol. Binnen OT-convergentie, waar IT-applicaties en OT-systemen data delen, zit RabbitMQ vaak tussen SCADA, MES, ERP, historians en cloudtoepassingen in, zodat een storing in het ene systeem niet direct doorwerkt in het andere.


🧠 Waar komt RabbitMQ vandaan en wie onderhoudt het?

RabbitMQ werd in 2007 uitgebracht door Rabbit Technologies, een joint venture van LShift en CohesiveFT. In april 2010 nam SpringSource, toen onderdeel van VMware, het project over. Het ging in 2013 naar Pivotal en kwam eind 2019 weer bij VMware terecht. Sinds Broadcom VMware in november 2023 overnam, valt RabbitMQ onder Broadcom, dat naast de gratis open-sourceversie een commerciële variant (Tanzu RabbitMQ) met langere ondersteuning levert.

De server is geschreven in Erlang op het Open Telecom Platform (OTP), een omgeving die oorspronkelijk voor telefooncentrales is ontwikkeld en sterk is in veel gelijktijdige verbindingen en foutisolatie. De broncode valt onder de Mozilla Public License 2.0.

Versie Uitgebracht Belangrijkste wijziging
3.8 2019 Quorum queues gebaseerd op het Raft-algoritme
3.9 2021 Streams: een replicerend, alleen-toevoegend berichtenlog
3.12 2023 Native MQTT-implementatie met veel lager geheugengebruik
3.13 februari 2024 Ondersteuning voor MQTT 5.0
4.0 september 2024 AMQP 1.0 als kernprotocol, classic mirrored queues verwijderd
4.2 oktober 2025 Khepri standaard als metadataopslag voor nieuwe clusters
4.4 oktober 2026 Meest recente reeks

Let op de levenscyclus: een releasereeks krijgt ongeveer negen maanden gratis community-ondersteuning. Wie langer op één versie wil blijven, wat in OT vaak gewenst is, heeft een commercieel contract nodig of moet het patchritme daarop inrichten.


🔧 Hoe werkt RabbitMQ?

RabbitMQ werkt met een broker in het midden. Een producer stuurt een bericht nooit rechtstreeks naar een queue, maar naar een exchange. Die exchange bepaalt aan de hand van bindings en een routing key in welke queue of queues het bericht terechtkomt. Een consumer haalt het bericht daar op en bevestigt de verwerking met een acknowledgement; pas dan verwijdert de broker het.

Component Functie
Producer Verstuurt berichten naar een exchange
Exchange Routeert berichten op basis van bindings en routing key
Queue Bewaart berichten totdat een consumer ze verwerkt
Binding Regel die een exchange aan een queue koppelt
Consumer Verwerkt berichten en stuurt een acknowledgement
Virtual host Logische scheiding van exchanges, queues en rechten binnen één broker

RabbitMQ kent vier basistypen exchanges, die in vrijwel elke installatie voorkomen:

Type Routing Voorbeeld in OT
Direct Exacte overeenkomst met de routing key Productieorder voor één specifieke lijn
Topic Patroon met * (één woord) en # (nul of meer woorden) lijn1.*.alarm naar de alarmqueue
Fanout Naar alle gekoppelde queues Recept- of ploegwissel naar alle afnemers
Headers Op berichtheaders in plaats van routing key Routering op type machine of locatie

Daarnaast bestaan er minder gebruikte typen, zoals de local random exchange, die een bericht naar een queue op de eigen node stuurt, en via plugins de consistent hashing exchange voor het verdelen van berichten over queues. Bovendien biedt de broker werkpatronen als work queues (taken verdelen over meerdere consumers), publish-subscribe, request-reply en dead-letter exchanges voor berichten die niet verwerkt kunnen worden.


🔄 Welke queue-types zijn er en wanneer gebruikt u welke?

Moderne RabbitMQ-versies hebben drie soorten opslag. De keuze bepaalt hoe betrouwbaar en hoe snel uw datastroom is.

Type Werking Geschikt voor
Classic queue Eén kopie op één node, berichten verdwijnen na acknowledgement Tijdelijke of niet-kritieke data op één node
Quorum queue Gerepliceerd over meerdere nodes via Raft Kritieke berichten zoals orders en alarmen
Stream Alleen-toevoegend log, lezen verwijdert niets Telemetrie, replay en meerdere afnemers van dezelfde data

Streams bewaren berichten totdat een retentieregel (max-age, bijvoorbeeld 7D, of max-length-bytes) ze opruimt. Een consumer kan vanaf het begin, vanaf het einde, vanaf een offset of vanaf een tijdstip lezen. Daarmee kan RabbitMQ ook data opnieuw afspelen, iets wat vroeger alleen bij Apache Kafka kon.

De oude classic mirrored queues zijn in versie 4.0 verwijderd. Voor hoge beschikbaarheid gebruikt u nu quorum queues of streams op een cluster van drie of vijf nodes; met drie nodes mag er één uitvallen, met vijf twee.


🌐 Welke protocollen en poorten gebruikt RabbitMQ?

Protocol Poort (zonder / met TLS) Gebruik
AMQP 0-9-1 en AMQP 1.0 5672 / 5671 Applicatie-integratie, enterprise-koppelingen
MQTT 3.1, 3.1.1 en 5.0 1883 / 8883 Sensoren, edge devices, IIoT
Streamprotocol 5552 / 5551 Hoge doorvoer en replay van streams
STOMP 61613 / 61614 Eenvoudige tekstclients
HTTP API en beheeromgeving 15672 / 15671 Beheer, monitoring en scripts
Prometheus-metrics 15692 / 15691 Koppeling met Grafana en monitoring
Clustercommunicatie 25672 en 4369 (epmd) Alleen tussen RabbitMQ-nodes

MQTT-berichten komen standaard binnen op de topic exchange amq.topic. RabbitMQ vertaalt daarbij het MQTT-scheidingsteken / naar . en de wildcard + naar *, zodat het MQTT-topic fabriek/lijn1/temp als routing key fabriek.lijn1.temp verder gaat. Zo kunnen MQTT-sensoren en AMQP-applicaties dezelfde data delen. Een beperking: retained MQTT-berichten worden niet tussen nodes gerepliceerd. Wie een volwaardige MQTT-broker zoekt, kijkt ook naar Mosquitto of een broker met Sparkplug B-ondersteuning.


📡 Waar plaatst u RabbitMQ in een OT-architectuur?

RabbitMQ hoort boven de realtime besturing. In het Purdue Model staat de broker op niveau 3 (operations, naast MES en historian), in de IDMZ op niveau 3.5 als tussenstation naar het bedrijfsnetwerk, of op niveau 4 en in de cloud. Op niveau 0 tot en met 2 hoort hij niet: de broker is niet deterministisch, latency hangt af van belasting en schijf, en een herstart van de broker mag een machine nooit stilleggen. Realtime besturing blijft daarom bij veldbussen zoals ProfiNET, IP en EtherCAT.

Dat de broker los staat van de besturing, is juist de kracht: schaalbaarheid en foutisolatie zonder risico voor het proces. Een veelgebruikt patroon is een broker per locatie op niveau 3 die data van SCADA en edge-gateways verzamelt, plus een shovel of federation-koppeling die berichten via de IDMZ naar een centrale broker doorzet. Valt de WAN- of cloudverbinding weg, dan bufferen de lokale queues de berichten en draait de productie gewoon door. Dat sluit aan bij de ISA-95-scheiding tussen besturing, operations en bedrijfsvoering.


🔐 Hoe beveiligt u RabbitMQ in een OT-omgeving?

Een broker die SCADA, MES en cloud verbindt, is voor cybersecurity een aantrekkelijk doelwit: wie erbij kan, kan berichten lezen, vervalsen of queues laten vollopen. Belangrijke maatregelen:

  • Verwijder het account guest - sinds versie 3.3 mag guest alleen vanaf localhost inloggen, maar in productie hoort het account weg.
  • Alleen TLS-poorten - sluit 5672, 1883 en 15672 en gebruik 5671, 8883 en 15671, bij voorkeur met clientcertificaten en goed certificaatbeheer.
  • Minimale rechten - geef elke applicatie een eigen gebruiker en virtual host met alleen configure-, write- en read-rechten op de eigen exchanges en queues (Least Privilege, RBAC).
  • Centrale identiteiten - koppel aan LDAP of via de OAuth 2.0-plugin aan een identity provider; MFA voor beheerders regelt u in die identity provider, RabbitMQ zelf kent geen MFA.
  • Bescherm de beheerinterface en clusterpoorten - poort 15672, 25672 en 4369 horen nooit bereikbaar te zijn vanuit het productie- of internetnetwerk.
  • Grenzen instellen - memory- en disk-alarms, maximale queuelengte en verbindingslimieten voorkomen dat één foute producer de broker plat legt.
  • Monitoren en loggen - stuur logs naar uw SIEM en houd metrics bij zoals queuelengte, niet-bevestigde berichten en verbindingen per gebruiker.

Plaats de broker in een eigen zone volgens IEC 62443, met conduits naar de zones die hij bedient, en volg Defense in Depth en Zero Trust: elke client authenticeert, elke verbinding is versleuteld en alleen benodigde poorten staan open in de DMZ of IDMZ. Voor organisaties onder de Cyberbeveiligingswet, die op 15 augustus 2026 in werking trad, valt de broker gewoon onder de netwerk- en informatiesystemen waarvoor zorgplicht en patchmanagement gelden. Voor de governance eromheen sluiten ISO 27001, het NIST CSF en de OT-richtlijn NIST SP 800-82 aan.


🧩 Wat is het verschil tussen RabbitMQ en Apache Kafka?

Eigenschap RabbitMQ Apache Kafka
Basismodel Broker met slimme routing naar queues Gedistribueerd, gepartitioneerd log
Routing Zeer flexibel via exchanges en bindings Per topic en partitie, routing in de client
Bewaren van data Tot acknowledgement; bij streams volgens retentie Volgens retentie, vaak dagen tot maanden
Replay Mogelijk met streams Standaard
Protocollen AMQP, MQTT, STOMP, streams Eigen Kafka-protocol
Typisch gebruik Opdrachten, workflows, alarmen, request-reply Grootschalige event streaming en analytics

In de praktijk vullen ze elkaar aan: RabbitMQ verwerkt opdrachten en berichten per locatie, Kafka verzamelt grote eventstromen centraal voor analyse. Voor een Unified Namespace kiezen veel fabrieken eerst een MQTT-broker en voegen RabbitMQ of Kafka toe waar routing of langdurige opslag nodig is.


🏭 Hoe zet u RabbitMQ stap voor stap in een fabriek in?

  1. Breng de datastromen in kaart - welke systemen sturen wat, hoe vaak en hoe kritisch is verlies?
  2. Kies per stroom het queue-type - quorum queues voor orders en alarmen, streams voor telemetrie, classic queues alleen voor wegwerpdata.
  3. Ontwerp een naamgeving voor routing keys - bijvoorbeeld locatie.lijn.machine.type, zodat topic exchanges later uitbreidbaar zijn.
  4. Bouw een cluster van drie nodes - op aparte hardware of Kubernetes-nodes, met een oneven aantal voor het quorum.
  5. Beveilig vanaf dag één - TLS, eigen gebruikers per applicatie, aparte virtual hosts en firewallregels in de IDMZ.
  6. Stel monitoring in - Prometheus-metrics naar Grafana, met alarmen op queuelengte en disk-alarms.
  7. Plan de levenscyclus - leg in uw lifecyclebeheer vast wanneer u naar een nieuwe releasereeks overstapt, en test upgrades eerst op een acceptatiecluster.
  8. Test storingen - schakel een node of de WAN-verbinding uit en controleer dat berichten gebufferd en daarna correct afgeleverd worden.

Een voorbeeld: een voedingsmiddelenproducent laat SCADA-alarmen via een topic exchange naar een quorum queue voor het onderhoudssysteem gaan, stuurt machinetellers via een stream naar een historian en een OEE-dashboard, en ontvangt productieorders uit het ERP via een direct exchange per lijn. Valt de cloudverbinding een uur weg, dan lopen alleen de queues op; de lijnen draaien door.


❓ Veelgestelde vragen

Is RabbitMQ gratis?

RabbitMQ is open source onder de Mozilla Public License 2.0 en gratis te gebruiken, ook commercieel. Broadcom levert daarnaast Tanzu RabbitMQ met betaalde ondersteuning en langere onderhoudstermijnen per versie. Voor OT-omgevingen die lang op één versie willen blijven, is die langere ondersteuning vaak het belangrijkste argument.

Kan RabbitMQ MQTT-berichten verwerken?

Ja, RabbitMQ ondersteunt MQTT 3.1, 3.1.1 en sinds versie 3.13 ook MQTT 5.0 via een plugin die standaard wordt meegeleverd. MQTT-berichten komen binnen op de topic exchange amq.topic, waardoor AMQP-applicaties dezelfde data kunnen ontvangen. Retained messages worden in RabbitMQ echter niet tussen clusternodes gerepliceerd.

Is RabbitMQ geschikt voor realtime machinebesturing?

Nee, RabbitMQ is niet deterministisch en hoort daarom niet in de besturingslagen van het Purdue-model. De broker is bedoeld voor integratie op niveau 3 en hoger, zoals alarmdistributie, orders en telemetrie. Realtime besturing blijft bij PLC’s en veldbussen zoals PROFINET, EtherNet/IP en EtherCAT.

Wat zijn quorum queues in RabbitMQ?

Quorum queues zijn queues die via het Raft-algoritme over meerdere nodes worden gerepliceerd en sinds versie 3.8 beschikbaar zijn. Een bericht geldt pas als opgeslagen wanneer een meerderheid van de nodes het heeft, zodat het uitvallen van één node in een cluster van drie geen data kost. Sinds RabbitMQ 4.0 zijn quorum queues de opvolger van de verwijderde classic mirrored queues.

Kan RabbitMQ berichten opnieuw afspelen zoals Kafka?

Ja, met streams, die sinds versie 3.9 bestaan, bewaart RabbitMQ berichten in een alleen-toevoegend log totdat een retentieregel ze opruimt. Een consumer kan dan vanaf het begin, een offset of een tijdstip opnieuw lezen. Voor zeer grote, langdurige eventarchieven blijft Apache Kafka meestal de gangbaardere keuze.

Welke poorten moet ik openzetten voor RabbitMQ?

Voor beveiligde clients zijn dat meestal 5671 voor AMQP over TLS, 8883 voor MQTT over TLS en 15671 voor de beheeromgeving over HTTPS. De onversleutelde poorten 5672, 1883 en 15672 sluit u bij voorkeur af. De clusterpoorten 25672 en 4369 horen alleen open te staan tussen de RabbitMQ-nodes onderling.


📌 Samengevat

RabbitMQ is een open-source message broker die berichten via exchanges en queues betrouwbaar tussen systemen routeert, buffert en aflevert. In IT/OT-omgevingen verbindt RabbitMQ SCADA, MES, ERP, historians en cloud op niveau 3 en hoger, met quorum queues voor kritieke berichten, streams voor telemetrie en replay, en AMQP en MQTT als belangrijkste protocollen. Plaats de broker in een eigen zone, gebruik alleen TLS en minimale rechten, en houd de korte ondersteuningstermijnen per versie in uw patchbeleid in de gaten.