Signatur
Beschreibung
stomp_connect() stellt eine Verbindung zu einem STOMP-Broker (Simple Text Oriented Messaging Protocol) her. STOMP ist ein einfaches, textbasiertes Protokoll für den Austausch von Nachrichten zwischen Clients und Nachrichtenbrokern wie Apache ActiveMQ, RabbitMQ oder HornetQ.
Die Funktion gehört zur prozeduralen Schnittstelle der PHP-Stomp-Erweiterung. Die objektorientierte Alternative ist new Stomp($broker). Die zurückgegebene Ressource wird bei nachfolgenden Stomp-Funktionen wie stomp_send(), stomp_subscribe() oder stomp_disconnect() als erstes Argument übergeben.
Der $broker-Parameter akzeptiert URIs wie tcp://hostname:61613 oder ssl://hostname:61612 für verschlüsselte Verbindungen. Über $headers können zusätzliche Verbindungsparameter wie heart-beat, accept-version oder broker-spezifische Optionen übermittelt werden.
Schlägt die Verbindung fehl (z. B. wegen eines nicht erreichbaren Brokers oder falscher Zugangsdaten), gibt die Funktion false zurück. Im Fehlerfall lässt sich die Fehlermeldung mit stomp_connect_error() abfragen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $broker | string | tcp://localhost:61613 | URI des STOMP-Brokers. Unterstützte Schemata sind tcp:// für unverschlüsselte und ssl:// für verschlüsselte Verbindungen, z. B. tcp://activemq.example.com:61613. |
| $username | string | Benutzername zur Authentifizierung am Broker. Bei Brokern ohne Authentifizierung kann ein leerer String übergeben werden. | |
| $password | string | Passwort zur Authentifizierung am Broker. Wird im Klartext übertragen, sofern keine SSL/TLS-Verbindung verwendet wird. | |
| $headers | array | [] | Assoziatives Array mit zusätzlichen STOMP-Headern für den CONNECT-Frame, z. B. ['heart-beat' => '0,0', 'accept-version' => '1.1']. |
Rückgabewert
false zurückgegeben; die Fehlerursache kann mit stomp_connect_error() abgefragt werden.Beispiele
Einfache Verbindung zu einem lokalen ActiveMQ-Broker
<?php
// Verbindung zum lokalen STOMP-Broker aufbauen
$stomp = stomp_connect('tcp://localhost:61613', 'admin', 'admin');
if ($stomp === false) {
die('Verbindung fehlgeschlagen: ' . stomp_connect_error());
}
echo 'Verbindung erfolgreich hergestellt.' . PHP_EOL;
// Nachricht an eine Queue senden
stomp_send($stomp, '/queue/test', 'Hallo, STOMP!');
// Verbindung sauber trennen
stomp_disconnect($stomp);
Verbindung mit SSL und zusätzlichen Headern
<?php
// Verbindung über SSL mit STOMP 1.1 und Heart-Beat-Konfiguration
$headers = [
'accept-version' => '1.1',
'heart-beat' => '5000,5000',
];
$stomp = stomp_connect(
'ssl://broker.example.com:61612',
'mquser',
'geheimesPasswort',
$headers
);
if ($stomp === false) {
$error = stomp_connect_error();
error_log('Stomp-Verbindungsfehler: ' . $error);
exit(1);
}
echo 'SSL-Verbindung aufgebaut.' . PHP_EOL;
// Abonnement einrichten
stomp_subscribe($stomp, '/topic/nachrichten');
// Verbindung trennen
stomp_disconnect($stomp);
// Wichtig · Fallstricke
Sicherheit: Benutzername und Passwort werden bei einer unverschlüsselten TCP-Verbindung im Klartext übertragen. Für Produktionsumgebungen sollte stets ssl:// verwendet werden, um die Zugangsdaten zu schützen.
Erweiterung: Die Stomp-Erweiterung ist nicht Bestandteil der PHP-Kerninstallation und muss separat über PECL installiert werden (pecl install stomp). Prüfen Sie die Verfügbarkeit mit extension_loaded('stomp').
Objektorientierte Alternative: Statt der prozeduralen Funktion kann die Klasse Stomp verwendet werden: $s = new Stomp('tcp://localhost:61613');. Der Konstruktor wirft bei Fehlern eine StompException, was eine sauberere Fehlerbehandlung ermöglicht.
Deprecation: Die prozedurale API gilt als veraltet gegenüber der OOP-API. Neue Projekte sollten die Stomp-Klasse bevorzugen.