TsgcWSPClient_MQTTMetodi › PublishAndWait

PublishAndWait Metodo

Pubblica un messaggio e si blocca fino a quando il broker lo conferma o scade il timeout.

Overload

Overload 1

Sintassi

function PublishAndWait(const aTopic, aText: String; aQoS: TmqttQoS = mtqsAtMostOnce; aRetain: Boolean = False; const aPublishProperties: TsgcWSMQTTPublish_Properties = nil; const aTimeout: Integer = 10000): Boolean;

Parametri

NomeTipoDescrizione
aTopicconst StringNome del topic di destinazione per il pacchetto PUBLISH.
aTextconst StringPayload UTF-8 del messaggio.
aQoSTmqttQoSGaranzia di consegna. Solo QoS 1 e QoS 2 producono una conferma del broker, quindi QoS 0 restituisce True immediatamente dopo la scrittura del pacchetto.
aRetainBooleanFlag Retain inoltrato al broker.
aPublishPropertiesconst TsgcWSMQTTPublish_PropertiesProprietà di pubblicazione MQTT 5.0 opzionali. Passare nil quando non necessarie.
aTimeoutconst IntegerTempo massimo, in millisecondi, da attendere per il PUBACK corrispondente (QoS 1) o PUBCOMP (QoS 2). Il valore predefinito è 10000.

Valore restituito

True se il broker ha confermato il messaggio prima della scadenza del timeout; False se il timeout è scaduto o la sessione è stata interrotta. (Boolean)

Note

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.

Esempio

if not MQTT.PublishAndWait('alerts/critical', '{"code":500}', mtqsAtLeastOnce, False, nil, 5000) then
  raise Exception.Create('broker did not acknowledge alert');

Sovraccarico 2

Sintassi

function PublishAndWait(const aTopic: String; const aStream: TStream; aQoS: TmqttQoS = mtqsAtMostOnce; aRetain: Boolean = False; const aPublishProperties: TsgcWSMQTTPublish_Properties = nil; const aTimeout: Integer = 10000): Boolean;

Parametri

NomeTipoDescrizione
aTopicconst StringNome del topic di destinazione per il pacchetto PUBLISH binario.
aStreamconst TStreamStream che fornisce i byte grezzi inviati come payload. Da leggere completamente prima della trasmissione.
aQoSTmqttQoSGaranzia di consegna applicata al pacchetto PUBLISH.
aRetainBooleanFlag Retain inoltrato al broker.
aPublishPropertiesconst TsgcWSMQTTPublish_PropertiesProprietà MQTT 5.0 opzionali, comunemente usate per impostare il Content Type per payload binari.
aTimeoutconst IntegerMillisecondi massimi di attesa per il riconoscimento QoS 1/2. Predefinito 10000.

Valore restituito

True alla ricezione dell'acknowledgement, False in caso di timeout o disconnessione. (Boolean)

Note

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.

Esempio

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;

Torna ai Metodi