TsgcWSPClient_MQTTMethoden › PublishAndWait

PublishAndWait Methode

Publiceert een bericht en blokkeert totdat de broker dit bevestigt of de time-out verloopt.

Overloads

Overload 1

Syntaxis

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

Parameters

NaamTypeBeschrijving
aTopicconst StringNaam van het doelonderwerp voor het PUBLISH-pakket.
aTextconst StringUTF-8-payload van het bericht.
aQoSTmqttQoSBezorggarantie. Alleen QoS 1 en QoS 2 produceren een brokerbevestiging, dus QoS 0 retourneert True onmiddellijk nadat het pakket is geschreven.
aRetainBooleanRetain-vlag doorgestuurd naar de broker.
aPublishPropertiesconst TsgcWSMQTTPublish_PropertiesOptionele MQTT 5.0-publicatie-eigenschappen. Geef nil door wanneer niet nodig.
aTimeoutconst IntegerMaximale tijd, in milliseconden, om te wachten op de overeenkomende PUBACK (QoS 1) of PUBCOMP (QoS 2). Standaard is 10000.

Retourwaarde

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)

Opmerkingen

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.

Voorbeeld

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

Overload 2

Syntaxis

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

Parameters

NaamTypeBeschrijving
aTopicconst StringDoelonderwerpnaam voor het binaire PUBLISH-pakket.
aStreamconst TStreamStream die de onbewerkte bytes levert die als payload worden verzonden. Volledig lezen vóór verzending.
aQoSTmqttQoSBezorggarantie toegepast op het PUBLISH-pakket.
aRetainBooleanRetain-vlag doorgestuurd naar de broker.
aPublishPropertiesconst TsgcWSMQTTPublish_PropertiesOptionele MQTT 5.0-eigenschappen, vaak gebruikt om het inhoudstype in te stellen voor binaire payloads.
aTimeoutconst IntegerMaximum aantal milliseconden te wachten op de QoS 1/2-bevestiging. Standaard 10000.

Retourwaarde

True bij bevestiging, False bij time-out of verbreking. (Boolean)

Opmerkingen

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.

Voorbeeld

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;

Terug naar methoden