TsgcWSPClient_MQTTMetody › PublishAndWait

PublishAndWait Metoda

Publikuje wiadomość i czeka, aż broker ją potwierdzi lub upłynie limit czasu.

Przeciążenia

Przeciążenie 1

Składnia

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

Parametry

NazwaTypOpis
aTopicconst StringNazwa tematu docelowego dla pakietu PUBLISH.
aTextconst StringŁadunek UTF-8 wiadomości.
aQoSTmqttQoSGwarancja dostarczenia. Tylko QoS 1 i QoS 2 generują potwierdzenie od brokera, dlatego QoS 0 zwraca True natychmiast po zapisaniu pakietu.
aRetainBooleanFlaga Retain przekazywana do brokera.
aPublishPropertiesconst TsgcWSMQTTPublish_PropertiesOpcjonalne właściwości publikowania MQTT 5.0. Należy przekazać nil, jeśli nie są potrzebne.
aTimeoutconst IntegerMaksymalny czas oczekiwania w milisekundach na pasujący PUBACK (QoS 1) lub PUBCOMP (QoS 2). Wartość domyślna wynosi 10000.

Wartość zwracana

True, gdy broker potwierdził wiadomość przed upływem limitu czasu; False, gdy oczekiwanie przekroczyło limit czasu lub sesja została przerwana. (Boolean)

Uwagi

Synchroniczne przeciążenie tekstowe. Przydatne w przepływach żądanie/odpowiedź i skryptach startowych, gdzie wywołujący musi wiedzieć, że wiadomość dotarła do brokera przed kontynuacją. Nie może być wywoływane z własnych wywołań zwrotnych komponentu, ponieważ są one już szeregowane w wątku transportu i spowodowałoby zakleszczenie.

Przykład

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

Przeciążenie 2

Składnia

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

Parametry

NazwaTypOpis
aTopicconst StringNazwa tematu docelowego dla binarnego pakietu PUBLISH.
aStreamconst TStreamStrumień dostarczający surowe bajty wysyłane jako ładunek. Odczytać w całości przed transmisją.
aQoSTmqttQoSGwarancja dostarczenia zastosowana do pakietu PUBLISH.
aRetainBooleanFlaga Retain przekazywana do brokera.
aPublishPropertiesconst TsgcWSMQTTPublish_PropertiesOpcjonalne właściwości MQTT 5.0, powszechnie używane do ustawiania Content Type dla ładunków binarnych.
aTimeoutconst IntegerMaksymalna liczba milisekund oczekiwania na potwierdzenie QoS 1/2. Domyślnie 10000.

Wartość zwracana

True po potwierdzeniu, False w przypadku przekroczenia limitu czasu lub rozłączenia. (Boolean)

Uwagi

Synchroniczny binarny wariant odpowiedni do przepływów wgrywania plików, gdzie kod wywołujący musi potwierdzić, że każdy fragment został zapisany przez brokera. Należy unikać wywoływania go z procedur obsługi zdarzeń i stosować realistyczne limity czasu podczas wysyłania dużych ładunków przez wolne sieci.

Przykład

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;

Powrót do metod