RabbitMQ bietet als Message Broker eine solide Grundlage für den Austausch von Nachrichten. RabbitMQ implementiert dazu in erster Linie das asynchrone Kommunikationsprotokoll AMQ.
Das RabbitMQ Projekt verwendet die Programmiersprache Erlang, die in der Telekomunikationsindustrie entwickelt wurde. Sie steht für Skalierbarkeit, Zuverlässigkeit sowie hohen Durchsatz unter Last. Das Framework OTP (Open Telecom Platform) steuert Fehlertoleranz, niedrige Latenz und native Verteiltheit bei.
Der asynchrone Nachrichtenaustausch über Messaging ermöglicht die Entkopplung von Sender und Empfänger. Die lose Kopplung von Services ist eine Voraussetzung für erfolgreiche Microservices Projekte.
RabbitMQ ist ein zuverlässiger, beliebter Message Broker mit zahlreichen Features. Dieses Seminar vermittelt die notwendigen Grundlagen und das Detailwissen, um RabbitMQ optimal einzusetzen.
Messaging Grundlagen
- Lose Koppelung von Nachrichtenproduzent und -konsument
- Was ist RabbitMQ?
Nachrichten und Queues
- Aufbau einer Nachricht
- Nützliche Messageheader
- Verwendung von Queues für den Nachrichtaustausch
- Softwarearchitektur mit Queues
- Verwaltung von Exchanges, Queues und Bindings mit dem RabbitMQ
AMQP
- Das AMQP Protokoll
- AMQP mit RabbitMQ
Persistenz
- Das Message Store Muster
- Mnesia und Khepri
- Quorum-Queues mit Ra
- Extrem hoher Durchsatz mit RabbitMQ Streams
Exchanges
- Die vier Standard-Varianten von Exchanges: Direct, Fanout, Topic und Headers
- Default Exchange
- Consistent Hashing Exchange mittels Plugin
- JMS Topic Exchange mittels Plugin
- Wann verwende ich welche Variante?
Clients
- Advanced Message Queuing Protocol (AMQP)
- Consumer und Producer mit Java realisieren
Konfiguration & Administration
- Aufbau der rabbitmq.conf und advanced.config Dateien
- Konfiguration der Plugins
- Die Web Konsole
- Logging
- Dead Letter Queue
Fehlerbehandlung
- Redelivery
- Auslieferungsgarantie
- Dead Letter Queue
Transaktionen
- Wie beeinflusse ich die Quality of Service durch automatisches und manuelles Acknowledgement?
- AMQP Transaktionen und Performance
Protokolle und Transport
- Die Protokolle AMQP 0.9.1, AMQP 1.0, MQTT und Stomp im Überblick
- Anbindung von Perl-, Phyton- oder C-basierten Clients mit dem Stomp Protokoll
- Client Failover
Performanz
- Wie viele Nachrichten kann der Broker verarbeiten?
- Wie lange dauert die Zustellung einer Nachricht?
- Wie wähle ich den richtigen Prefetch-Wert?
Performanz und Tuning
- Einflußfaktoren
- Speicherverbrauch
- Netzwerk und TCP Tuning
Clustering
- Hochverfügbarkeit, Ausfallsicherheit, Skalierbarkeit und Antwortzeitverhalten
- Competing Consumers und parallele Verarbeitung
- Lastverteilung mit Loadbalancing
Administration
- Die Web Konsole
Monitoring
- RabbitMQ mit Prometheus überwachen
Programmierung
- Einführung in AMQP
- Wie du mit der RabbitMQ Java Client API Message Consumer und Producer erstellen kannst
Enterprise Integration Patterns EIP
- Message Broker
- Message Expiration
- Message Filter mit JMS Selektoren
- Guaranteed Delivery
- Idempotent Receiver
- Invalid Message Channel
- Verfolgen von Nachrichten mit der Correlation Id
- Versenden großer Nachrichten mit dem Claim Check Muster
Sicherheit
- Authentifikation über Passwort oder Zertifikat
- Verschlüsselung mit SSL/TLS
Plattform
- RabbitMQ Operator für Kubernetes
Architektur
- Wie verändert sich eine Softwarearchitektur durch die Verwendung von Messaging?
- Synchrones Request/Reply - braucht man das noch?
- Welche Muster eignen sich?
- Die Rolle von Messaging in einer Microservices Architektur
Routing mit Apache Camel
- Integration mit ActiveMQ
- EAI Patterns
Zielgruppe
Administratoren, Entwickler, Software Architekten
Vorkenntnisse
IT Grundlagen, Grundlagen in der Java Programmierung sind hilfreich, aber nicht notwendig.
Deine Vorteile
- Sie lernen, wie Sie RabbitMQ optimal einsetzen können
- Ihre Software-Architektur wird durch lose Kopplung robuster
Dauer
2 Tage
Kursunterlage
Handouts aller in der Schulung präsentierten Folien sowie ein Skript mit detaillierten Übungen.
RabbitMQ ist ein eingetragenes Warenzeichen der von Broadcom Inc.