Start · Sprachen · PHP · Referenz · stomp_connect

stomp_connect

Funktion

Öffnet eine Verbindung zu einem STOMP-kompatiblen Nachrichtenbroker (z. B. ActiveMQ) und gibt eine Verbindungsressource zurück.

seit PHP 0.1.0 Kategorie: misc

Signatur

stomp_connect(string $broker = 'tcp://localhost:61613', string $username = '', string $password = '', array $headers = []): resource|false

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

Typ
resource|false
Beschreibung
Gibt eine STOMP-Verbindungsressource zurück, die als Handle für alle weiteren Stomp-Funktionen dient. Bei einem Fehler wird 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 erfolgreich hergestellt.

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);
SSL-Verbindung aufgebaut.

// 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.