TsgcWSPClient_MQTT › Methoden › PublishAndWait
Veröffentlicht eine Nachricht und blockiert, bis der Broker sie bestätigt oder das Timeout abläuft.
function PublishAndWait(const aTopic, aText: String; aQoS: TmqttQoS = mtqsAtMostOnce; aRetain: Boolean = False; const aPublishProperties: TsgcWSMQTTPublish_Properties = nil; const aTimeout: Integer = 10000): Boolean;
| Name | Typ | Beschreibung |
|---|---|---|
aTopic | const String | Ziel-Topic-Name für das PUBLISH-Paket. |
aText | const String | UTF-8-Nutzlast der Nachricht. |
aQoS | TmqttQoS | Zustellungsgarantie. Nur QoS 1 und QoS 2 erzeugen eine Broker-Bestätigung, sodass QoS 0 sofort nach dem Schreiben des Pakets True zurückgibt. |
aRetain | Boolean | Retain-Flag, das an den Broker weitergeleitet wird. |
aPublishProperties | const TsgcWSMQTTPublish_Properties | Optionale MQTT-5.0-Publish-Eigenschaften. Übergeben Sie nil, wenn nicht benötigt. |
aTimeout | const Integer | Maximale Zeit in Millisekunden, die auf das passende PUBACK (QoS 1) oder PUBCOMP (QoS 2) gewartet wird. Standardmäßig 10000. |
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)
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.
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;
| Name | Typ | Beschreibung |
|---|---|---|
aTopic | const String | Ziel-Topic-Name für das binäre PUBLISH-Paket. |
aStream | const TStream | Stream, der die als Payload gesendeten rohen Bytes liefert. Wird vor der Übertragung vollständig gelesen. |
aQoS | TmqttQoS | Zustellungsgarantie, die auf das PUBLISH-Paket angewendet wird. |
aRetain | Boolean | Retain-Flag, das an den Broker weitergeleitet wird. |
aPublishProperties | const TsgcWSMQTTPublish_Properties | Optionale MQTT-5.0-Eigenschaften, die häufig verwendet werden, um den Content Type für binäre Payloads festzulegen. |
aTimeout | const Integer | Maximale Millisekunden, die auf die QoS-1/2-Bestätigung gewartet wird. Standardmäßig 10000. |
True bei Bestätigung, False bei Timeout oder Trennung. (Boolean)
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.
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;