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
Descrizione
Stile orientato agli oggetti (method):
Stile procedurale:
Sends a message to the Message Broker.
Elenco dei parametri
-
link -
Procedural style only: The stomp link identifier returned by stomp_connect().
-
destination -
Where to send the message
-
msg -
Message to send.
-
headers -
Associative array containing the additional headers (example: receipt).
Valori restituiti
Restituisce TRUE in caso di successo, FALSE in caso di fallimento.
Note
Nota:
A transaction header may be specified, indicating that the message acknowledgment should be part of the named transaction.
Stomp is inherently asynchronous. Synchronous communication can be implemented adding a receipt header. This will cause methods to not return anything until the server has acknowledged receipt of the message or until read timeout was reached.
Esempi
See stomp_ack().
