TsgcWSPClient_MQTT › Methoden › PublishAndWait
Publiceert een bericht en blokkeert totdat de broker dit bevestigt of de time-out verloopt.
function PublishAndWait(const aTopic, aText: String; aQoS: TmqttQoS = mtqsAtMostOnce; aRetain: Boolean = False; const aPublishProperties: TsgcWSMQTTPublish_Properties = nil; const aTimeout: Integer = 10000): Boolean;
| Naam | Type | Beschrijving |
|---|---|---|
aTopic | const String | Naam van het doelonderwerp voor het PUBLISH-pakket. |
aText | const String | UTF-8-payload van het bericht. |
aQoS | TmqttQoS | Bezorggarantie. Alleen QoS 1 en QoS 2 produceren een brokerbevestiging, dus QoS 0 retourneert True onmiddellijk nadat het pakket is geschreven. |
aRetain | Boolean | Retain-vlag doorgestuurd naar de broker. |
aPublishProperties | const TsgcWSMQTTPublish_Properties | Optionele MQTT 5.0-publicatie-eigenschappen. Geef nil door wanneer niet nodig. |
aTimeout | const Integer | Maximale tijd, in milliseconden, om te wachten op de overeenkomende PUBACK (QoS 1) of PUBCOMP (QoS 2). Standaard is 10000. |
True wanneer de broker het bericht heeft bevestigd vóór het verstrijken van de timeout; False wanneer de wachttijd is verstreken of de sessie is verbroken. (Boolean)
Synchrone tekstoverload. Nuttig voor verzoek/antwoord-workflows en opstartscripts waarbij de aanroeper moet weten dat het bericht de broker heeft bereikt voordat hij verdergaat. Mag niet worden aangeroepen vanuit de eigen gebeurteniscallbacks van de component, omdat die al zijn geserialiseerd op de transportthread en zou leiden tot een 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;
| Naam | Type | Beschrijving |
|---|---|---|
aTopic | const String | Doelonderwerpnaam voor het binaire PUBLISH-pakket. |
aStream | const TStream | Stream die de onbewerkte bytes levert die als payload worden verzonden. Volledig lezen vóór verzending. |
aQoS | TmqttQoS | Bezorggarantie toegepast op het PUBLISH-pakket. |
aRetain | Boolean | Retain-vlag doorgestuurd naar de broker. |
aPublishProperties | const TsgcWSMQTTPublish_Properties | Optionele MQTT 5.0-eigenschappen, vaak gebruikt om het inhoudstype in te stellen voor binaire payloads. |
aTimeout | const Integer | Maximum aantal milliseconden te wachten op de QoS 1/2-bevestiging. Standaard 10000. |
True bij bevestiging, False bij time-out of verbreking. (Boolean)
Synchrone binaire overbelasting die geschikt is voor bestandsuploadstromen waarbij de aanroepende code moet bevestigen dat elk fragment door de broker is opgeslagen. Vermijd het aanroepen vanuit eventhandlers en gebruik realistische time-outs bij het verzenden van grote payloads via trage netwerken.
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;