Without a receipt header your application will fire messages potentially faster than the broker can receive them at. The broker may issue failure notices however STOMP being asynchronous your client won't get to see it.
Without a receipt ActiveMQ (5.5.0) with ProducerFlowControl turned on drops messages (even persistent ones) and my application knows nothing about it (send() returned true). With receipt header specified the STOMP library handles the wait for the receipt acknowledgement for you - you are essentially automatically throttled.
Stomp::send
stomp_send
(PECL stomp >= 0.1.0)
Stomp::send -- stomp_send — Sends a message
Beschreibung
Objektorientierter Stil (method):
Prozeduraler Stil:
Sends a message to the Message Broker.
Parameter-Liste
-
link -
Nur für prozedurale Aufrufe: Die Stomp-Verbindung, die von stomp_connect() zurückgegeben wurde.
-
destination -
Where to send the message
-
msg -
Message to send.
-
headers -
Assoziatites Array, welches alle zusätzlichen Header beinhaltet (z.B: receipt).
Rückgabewerte
Gibt bei Erfolg TRUE zurück. Im Fehlerfall wird FALSE zurückgegeben.
Anmerkungen
Hinweis:
Ein Transaktionsheader kann angegeben werden. Dies zeigt an, dass die Bestätigung der Nachricht ein Bestandteil der benanten Transaktion sein soll.
Eine grundlegende Eigenschaft von Stomp ist die Synchronität. Synchrone Kommunikation kann durch das Hinzufügen eines Empfangsheaders (receipt-Header) implementiert werden. Dies wird dazu führen, dass Methoden nicht zurückkehren, bis der Server den Empfang der Nachricht bestätigt hat oder der Lese-Timeout übershcritten wurde.
Beispiele
See stomp_ack().
