TsgcWSPClient_MQTTMethoden › PublishAndWait

PublishAndWait Methode

Veröffentlicht eine Nachricht und blockiert, bis der Broker sie bestätigt oder das Timeout abläuft.

Überladungen

Overload 1

Syntax

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

Parameter

NameTypBeschreibung
aTopicconst StringZiel-Topic-Name für das PUBLISH-Paket.
aTextconst StringUTF-8-Nutzlast der Nachricht.
aQoSTmqttQoSZustellungsgarantie. Nur QoS 1 und QoS 2 erzeugen eine Broker-Bestätigung, sodass QoS 0 sofort nach dem Schreiben des Pakets True zurückgibt.
aRetainBooleanRetain-Flag, das an den Broker weitergeleitet wird.
aPublishPropertiesconst TsgcWSMQTTPublish_PropertiesOptionale MQTT-5.0-Publish-Eigenschaften. Übergeben Sie nil, wenn nicht benötigt.
aTimeoutconst IntegerMaximale Zeit in Millisekunden, die auf das passende PUBACK (QoS 1) oder PUBCOMP (QoS 2) gewartet wird. Standardmäßig 10000.

Rückgabewert

True, wenn der Broker die Nachricht vor Ablauf des Timeouts bestätigt hat; False, wenn die Wartezeit abgelaufen ist oder die Sitzung abgebrochen wurde. (Boolean)

Hinweise

Synchrone Text-Überladung. Nützlich für Request/Response-Workflows und Startskripte, bei denen der Aufrufer wissen muss, dass die Nachricht den Broker erreicht hat, bevor er fortfährt. Darf nicht aus den eigenen Ereignis-Callbacks der Komponente aufgerufen werden, da diese bereits auf dem Transport-Thread serialisiert sind und zu einem Deadlock führen würden.

Beispiel

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

Überladung 2

Syntax

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

Parameter

NameTypBeschreibung
aTopicconst StringZiel-Topic-Name für das binäre PUBLISH-Paket.
aStreamconst TStreamStream, der die als Payload gesendeten rohen Bytes liefert. Wird vor der Übertragung vollständig gelesen.
aQoSTmqttQoSZustellungsgarantie, die auf das PUBLISH-Paket angewendet wird.
aRetainBooleanRetain-Flag, das an den Broker weitergeleitet wird.
aPublishPropertiesconst TsgcWSMQTTPublish_PropertiesOptionale MQTT-5.0-Eigenschaften, die häufig verwendet werden, um den Content Type für binäre Payloads festzulegen.
aTimeoutconst IntegerMaximale Millisekunden, die auf die QoS-1/2-Bestätigung gewartet wird. Standardmäßig 10000.

Rückgabewert

True bei Bestätigung, False bei Timeout oder Trennung. (Boolean)

Hinweise

Synchrone Binär-Overload, geeignet für Datei-Upload-Flows, bei denen der aufrufende Code bestätigen muss, dass jeder Chunk vom Broker gespeichert wurde. Vermeiden Sie den Aufruf aus Ereignis-Handlern und verwenden Sie realistische Timeouts beim Senden großer Payloads über langsame Netzwerke.

Beispiel

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;

Zurück zu Methoden