Externe Messaging-Dienste verstehen
Symfony Messenger unterstützt eine Reihe von verschiedenen Transporttypen, darunter:
- In-Memory
- Doctrine
- Redis
- AMQP
- und andere.
In der Regel wirst du mit den einfachsten Optionen beginnen wollen. Der In-Memory-Transport ist vielleicht die einfachste Variante, wird aber hauptsächlich zu Testzwecken verwendet.
Der Doctrine-Transport verwendet die vorhandene Datenbank zum Speichern von Nachrichten. Er ist oft die erste Wahl, weil er einfach einzurichten ist und keine externen Abhängigkeiten erfordert.
Doctrine sollte jedoch nicht Ihre endgültige Lösung sein, da die Verwendung einer Datenbank als Nachrichtenwarteschlange nicht gut skalierbar ist. Irgendwann wirst du ein externes Message-Queue-System wie RabbitMQ oder Redis verwenden wollen — Vermittler, die deinen Anwendungen, Microservices und Softwarekomponenten eine gemeinsame Plattform zum Austausch von Nachrichten bieten.
In diesem Artikel konzentrieren wir uns auf RabbitMQ, einen sehr beliebten und ausgereiften Open-Source Messaging Broker.
Abgesehen von dem in TYPO3 integrierten Doctrine-Transport hat ein System wie RabbitMQ mehrere Vorteile:
- Es ist gut skalierbar. RabbitMQ kann eine große Anzahl von Nachrichtenanbietern und -verbrauchern bedienen. Anwendungen können miteinander verbunden werden, als Komponenten einer größeren Anwendung, oder mit Benutzergeräten und Daten. Die Arbeitslast kann auf mehrere Prozesse verteilt werden.
- Unterstützung für verteilte Systeme. RabbitMQ kann Nachrichten-Broker auf mehreren Knoten ausführen, um die Arbeitslast auf ein Netzwerk von Diensten zu verteilen und Nachrichten zwischen Produzenten und Konsumenten weiterzuleiten.
- Fehlertoleranz durch Design. Nachrichten werden in einer Warteschlange gespeichert, bis sie verbraucht werden. Die Warteschlange kann Lastspitzen auffangen und Nachrichten speichern, falls ein oder mehrere Verbraucher vorübergehend nicht verfügbar sind.
Diese Vorteile machen es lohnenswert, die Zeit zu investieren, um einen externen Nachrichtentransport für TYPO3 einzurichten. Wenn du RabbitMQ ausprobieren willst, lies weiter, um zu sehen, wie man ein DDEV-basiertes Nachrichtenwarteschlangen-Projekt erstellt.