TsgcWSPClient_MQTTMetody › Publish

Publish Metoda

Publikuje wiadomość do tematu z użyciem żądanych flag QoS i retain.

Przeciążenia

Przeciążenie 1

Składnia

function Publish(const aTopic, aText: String; aQoS: TmqttQoS = mtqsAtMostOnce; aRetain: Boolean = False; const aPublishProperties: TsgcWSMQTTPublish_Properties = nil) : Word;

Parametry

NazwaTypOpis
aTopicconst StringW pełni kwalifikowana nazwa tematu, do którego publikowana jest wiadomość (bez symboli wieloznacznych).
aTextconst StringŁadunek UTF-8 wysyłany jako treść pakietu PUBLISH.
aQoSTmqttQoSGwarancja dostarczenia: mtqsAtMostOnce (0), mtqsAtLeastOnce (1) lub mtqsExactlyOnce (2). Domyślnie mtqsAtMostOnce.
aRetainBooleanGdy wartość wynosi True, broker przechowuje wiadomość jako zatrzymaną wartość dla tematu i przekazuje ją nowym subskrybentom.
aPublishPropertiesconst TsgcWSMQTTPublish_PropertiesOpcjonalne właściwości MQTT 5.0 (typ zawartości, temat odpowiedzi, ważność wiadomości, właściwości użytkownika). Należy przekazać nil, aby je pominąć.

Wartość zwracana

Identyfikator pakietu przypisany do pakietu PUBLISH; różny od zera dla QoS 1 i 2, zero dla QoS 0. Umożliwia korelację z OnMQTTPubAck, OnMQTTPubRec i OnMQTTPubComp. (Word)

Uwagi

Przeciążenie tekstowe, idealne dla dokumentów JSON i innych treści UTF-8. Wywołanie powraca, gdy tylko pakiet zostanie przekazany do transportu; potwierdzenia QoS 1/2 są dostarczane asynchronicznie. Wymaga aktywnej sesji MQTT nawiązanej za pomocą Connect.

Przykład

MQTT.Publish('sensors/temp', '{"value":22.5}', mtqsAtLeastOnce, True);

Przeciążenie 2

Składnia

function Publish(const aTopic: String; const aStream: TStream; aQoS: TmqttQoS = mtqsAtMostOnce; aRetain: Boolean = False; const aPublishProperties: TsgcWSMQTTPublish_Properties = nil) : Word;

Parametry

NazwaTypOpis
aTopicconst StringW pełni kwalifikowana nazwa tematu, do którego publikowany jest ładunek binarny.
aStreamconst TStreamStrumień źródłowy, którego pełna zawartość jest wysyłana bez zmian jako ładunek PUBLISH. Pozycja jest zapisywana i przywracana przez komponent.
aQoSTmqttQoSGwarancja dostarczenia: mtqsAtMostOnce (0), mtqsAtLeastOnce (1) lub mtqsExactlyOnce (2). Domyślnie mtqsAtMostOnce.
aRetainBooleanGdy True, broker przechowuje ładunek jako wartość zachowaną dla tematu.
aPublishPropertiesconst TsgcWSMQTTPublish_PropertiesOpcjonalne właściwości MQTT 5.0, zazwyczaj używane do ustawienia Content Type (np. image/png) podczas wysyłania danych binarnych.

Wartość zwracana

Identyfikator pakietu dla pakietu PUBLISH; zero dla QoS 0. Umożliwia korelację ze zdarzeniami potwierdzenia. (Word)

Uwagi

Przeciążenie binarne dla plików, ramek protobuf, obrazów i innych ładunków niebędących tekstem. Strumień jest odczytywany w całości przed serializacją, dlatego bardzo duże ładunki powinny być dzielone na fragmenty na poziomie aplikacji, aby uniknąć dużych alokacji. Zachowanie w zakresie QoS, Retain i właściwości jest identyczne jak w przeciążeniu tekstowym.

Przykład

oStream := TFileStream.Create('firmware.bin', fmOpenRead or fmShareDenyWrite);
try
  MQTT.Publish('devices/123/firmware', oStream, mtqsExactlyOnce);
finally
  oStream.Free;
end;

Powrót do metod