TsgcWSPClient_MQTT › Metodi › PublishAndWait
Pubblica un messaggio e si blocca fino a quando il broker lo conferma o scade il timeout.
function PublishAndWait(const aTopic, aText: String; aQoS: TmqttQoS = mtqsAtMostOnce; aRetain: Boolean = False; const aPublishProperties: TsgcWSMQTTPublish_Properties = nil; const aTimeout: Integer = 10000): Boolean;
| Nome | Tipo | Descrizione |
|---|---|---|
aTopic | const String | Nome del topic di destinazione per il pacchetto PUBLISH. |
aText | const String | Payload UTF-8 del messaggio. |
aQoS | TmqttQoS | Garanzia di consegna. Solo QoS 1 e QoS 2 producono una conferma del broker, quindi QoS 0 restituisce True immediatamente dopo la scrittura del pacchetto. |
aRetain | Boolean | Flag Retain inoltrato al broker. |
aPublishProperties | const TsgcWSMQTTPublish_Properties | Proprietà di pubblicazione MQTT 5.0 opzionali. Passare nil quando non necessarie. |
aTimeout | const Integer | Tempo massimo, in millisecondi, da attendere per il PUBACK corrispondente (QoS 1) o PUBCOMP (QoS 2). Il valore predefinito è 10000. |
True se il broker ha confermato il messaggio prima della scadenza del timeout; False se il timeout è scaduto o la sessione è stata interrotta. (Boolean)
Overload di testo sincrono. Utile per flussi di lavoro richiesta/risposta e script di avvio in cui il chiamante deve sapere che il messaggio ha raggiunto il broker prima di procedere. Non deve essere richiamato dai callback degli eventi del componente, poiché questi sono già serializzati sul thread di trasporto e provocherebbero un deadlock.
if not MQTT.PublishAndWait('alerts/critical', '{"code":500}', mtqsAtLeastOnce, False, nil, 5000) then
raise Exception.Create('broker did not acknowledge alert');
function PublishAndWait(const aTopic: String; const aStream: TStream; aQoS: TmqttQoS = mtqsAtMostOnce; aRetain: Boolean = False; const aPublishProperties: TsgcWSMQTTPublish_Properties = nil; const aTimeout: Integer = 10000): Boolean;
| Nome | Tipo | Descrizione |
|---|---|---|
aTopic | const String | Nome del topic di destinazione per il pacchetto PUBLISH binario. |
aStream | const TStream | Stream che fornisce i byte grezzi inviati come payload. Da leggere completamente prima della trasmissione. |
aQoS | TmqttQoS | Garanzia di consegna applicata al pacchetto PUBLISH. |
aRetain | Boolean | Flag Retain inoltrato al broker. |
aPublishProperties | const TsgcWSMQTTPublish_Properties | Proprietà MQTT 5.0 opzionali, comunemente usate per impostare il Content Type per payload binari. |
aTimeout | const Integer | Millisecondi massimi di attesa per il riconoscimento QoS 1/2. Predefinito 10000. |
True alla ricezione dell'acknowledgement, False in caso di timeout o disconnessione. (Boolean)
Variante binaria sincrona adatta ai flussi di caricamento file in cui il codice chiamante deve confermare che ogni chunk sia stato archiviato dal broker. Evitare di invocarla dai gestori di eventi e utilizzare timeout realistici quando si inviano payload di grandi dimensioni su reti lente.
oStream := TMemoryStream.Create;
try
oStream.LoadFromFile('config.bin');
if not MQTT.PublishAndWait('devices/123/config', oStream, mtqsExactlyOnce, True, nil, 30000) then
ShowMessage('config upload failed');
finally
oStream.Free;
end;