Signatur
Beschreibung
stomp_send() ist die prozedurale Variante der Stomp-Erweiterung und sendet eine Nachricht an ein Ziel (z. B. eine Message-Queue oder ein Topic) über das Stomp-Protokoll (Simple Text Oriented Messaging Protocol). Das Protokoll wird von Message-Brokern wie ActiveMQ, RabbitMQ oder Apollo unterstützt.
Der Parameter $destination gibt den Pfad zur Queue oder zum Topic an, z. B. /queue/test oder /topic/news. Der Nachrichteninhalt wird als Zeichenkette in $msg übergeben. Zusätzliche Stomp-Header wie content-type, persistent oder eigene Anwendungs-Header können als assoziatives Array übergeben werden.
Um eine persistente Nachricht zu senden (die beim Broker gespeichert bleibt, bis sie verarbeitet wird), sollte der Header persistent auf true gesetzt werden. Dies ist besonders wichtig für kritische Nachrichten, die nicht verloren gehen dürfen.
Die objektorientierte Alternative zu dieser Funktion ist Stomp::send(). Es empfiehlt sich, nach dem Senden den Rückgabewert zu prüfen, um Übertragungsfehler zu erkennen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $link Pflicht | resource | Eine aktive Stomp-Verbindungsressource, die zuvor mit stomp_connect() erzeugt wurde. |
|
| $destination Pflicht | string | Das Ziel, an das die Nachricht gesendet wird, z. B. /queue/bestellungen oder /topic/news. |
|
| $msg Pflicht | string | Der Inhalt der zu sendenden Nachricht als Zeichenkette. Kann z. B. plain Text, JSON oder XML sein. | |
| $headers | array | [] | Optionales assoziatives Array mit zusätzlichen Stomp-Headern, z. B. ['persistent' => 'true', 'content-type' => 'application/json']. |
Rückgabewert
true zurück, wenn die Nachricht erfolgreich gesendet wurde, andernfalls false. Im Fehlerfall kann stomp_error() zur Fehlerdiagnose verwendet werden.Beispiele
Einfache Nachricht an eine Queue senden
<?php
// Verbindung zum Message-Broker herstellen
$link = stomp_connect('tcp://localhost:61613');
if (!$link) {
die('Verbindung fehlgeschlagen: ' . stomp_connect_error());
}
// Einfache Textnachricht senden
$result = stomp_send($link, '/queue/bestellungen', 'Neue Bestellung: #12345');
if ($result) {
echo 'Nachricht erfolgreich gesendet.';
} else {
echo 'Fehler beim Senden: ' . stomp_error($link);
}
stomp_close($link);
JSON-Nachricht als persistente Nachricht an eine Queue senden
<?php
$link = stomp_connect('tcp://localhost:61613');
if (!$link) {
die('Verbindung fehlgeschlagen: ' . stomp_connect_error());
}
$payload = json_encode([
'bestellung_id' => 12345,
'produkt' => 'Widget Pro',
'menge' => 3,
]);
$headers = [
'persistent' => 'true',
'content-type' => 'application/json',
];
$result = stomp_send($link, '/queue/bestellungen', $payload, $headers);
if ($result) {
echo 'Persistente JSON-Nachricht gesendet.';
} else {
echo 'Fehler: ' . stomp_error($link);
}
stomp_close($link);
// Wichtig · Fallstricke
Erweiterung installieren: Die Stomp-Erweiterung ist nicht standardmäßig in PHP enthalten. Sie muss über PECL installiert werden (pecl install stomp) und in der php.ini aktiviert sein (extension=stomp.so).
Sicherheit: Nachrichten werden über das Stomp-Protokoll unverschlüsselt übertragen, sofern nicht ssl:// als Protokoll in der Verbindungs-URL verwendet wird. In Produktionsumgebungen sollte stets eine TLS-gesicherte Verbindung genutzt werden.
Nachrichteninhalte: Werden sensible Daten (z. B. Nutzerdaten, Zahlungsinformationen) in Nachrichten übertragen, sollten diese vor dem Senden verschlüsselt werden, unabhängig von der Transportverschlüsselung.
Objektorientierte Alternative: Die OO-Variante Stomp::send() bietet dieselbe Funktionalität und ist in modernem Code bevorzugt zu verwenden.