TsgcWSPClient_MQTT › Metody › PublishAndWait
Publikuje wiadomość i czeka, aż broker ją potwierdzi lub upłynie limit czasu.
function PublishAndWait(const aTopic, aText: String; aQoS: TmqttQoS = mtqsAtMostOnce; aRetain: Boolean = False; const aPublishProperties: TsgcWSMQTTPublish_Properties = nil; const aTimeout: Integer = 10000): Boolean;
| Nazwa | Typ | Opis |
|---|---|---|
aTopic | const String | Nazwa tematu docelowego dla pakietu PUBLISH. |
aText | const String | Ładunek UTF-8 wiadomości. |
aQoS | TmqttQoS | Gwarancja dostarczenia. Tylko QoS 1 i QoS 2 generują potwierdzenie od brokera, dlatego QoS 0 zwraca True natychmiast po zapisaniu pakietu. |
aRetain | Boolean | Flaga Retain przekazywana do brokera. |
aPublishProperties | const TsgcWSMQTTPublish_Properties | Opcjonalne właściwości publikowania MQTT 5.0. Należy przekazać nil, jeśli nie są potrzebne. |
aTimeout | const Integer | Maksymalny czas oczekiwania w milisekundach na pasujący PUBACK (QoS 1) lub PUBCOMP (QoS 2). Wartość domyślna wynosi 10000. |
True, gdy broker potwierdził wiadomość przed upływem limitu czasu; False, gdy oczekiwanie przekroczyło limit czasu lub sesja została przerwana. (Boolean)
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.
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;
| Nazwa | Typ | Opis |
|---|---|---|
aTopic | const String | Nazwa tematu docelowego dla binarnego pakietu PUBLISH. |
aStream | const TStream | Strumień dostarczający surowe bajty wysyłane jako ładunek. Odczytać w całości przed transmisją. |
aQoS | TmqttQoS | Gwarancja dostarczenia zastosowana do pakietu PUBLISH. |
aRetain | Boolean | Flaga Retain przekazywana do brokera. |
aPublishProperties | const TsgcWSMQTTPublish_Properties | Opcjonalne właściwości MQTT 5.0, powszechnie używane do ustawiania Content Type dla ładunków binarnych. |
aTimeout | const Integer | Maksymalna liczba milisekund oczekiwania na potwierdzenie QoS 1/2. Domyślnie 10000. |
True po potwierdzeniu, False w przypadku przekroczenia limitu czasu lub rozłączenia. (Boolean)
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.
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;