TsgcWSPClient_MQTTMétodos › Publish

Publish Método

Publica un mensaje en un topic utilizando los indicadores QoS y retain solicitados.

Sobrecargas

Sobrecarga 1

Sintaxis

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

Parámetros

NombreTipoDescripción
aTopicconst StringNombre completo del tema al que se publica el mensaje (sin comodines).
aTextconst StringCarga útil UTF-8 enviada como cuerpo del paquete PUBLISH.
aQoSTmqttQoSGarantía de entrega: mtqsAtMostOnce (0), mtqsAtLeastOnce (1) o mtqsExactlyOnce (2). El valor predeterminado es mtqsAtMostOnce.
aRetainBooleanCuando es True, el broker almacena el mensaje como valor retenido para el tema y lo reenvía a los nuevos suscriptores.
aPublishPropertiesconst TsgcWSMQTTPublish_PropertiesPropiedades opcionales de MQTT 5.0 (Tipo de Contenido, Topic de Respuesta, Expiración de Mensaje, Propiedades de Usuario). Pase nil para omitirlas.

Valor de Retorno

Identificador de paquete asignado al paquete PUBLISH; distinto de cero para QoS 1 y 2, cero para QoS 0. Úselo para correlacionar con OnMQTTPubAck, OnMQTTPubRec y OnMQTTPubComp. (Word)

Observaciones

Sobrecarga de texto, ideal para documentos JSON y otro contenido UTF-8. La llamada retorna en cuanto el paquete se ha entregado al transporte; las confirmaciones de QoS 1/2 se entregan de forma asíncrona. Requiere una sesión MQTT activa establecida con Connect.

Ejemplo

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

Sobrecarga 2

Sintaxis

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

Parámetros

NombreTipoDescripción
aTopicconst StringNombre de tema completo al que se publica la carga útil binaria.
aStreamconst TStreamFlujo de origen cuyo contenido completo se envía literalmente como carga útil de PUBLISH. El componente guarda y restaura la posición.
aQoSTmqttQoSGarantía de entrega: mtqsAtMostOnce (0), mtqsAtLeastOnce (1) o mtqsExactlyOnce (2). El valor predeterminado es mtqsAtMostOnce.
aRetainBooleanCuando es True, el broker almacena la carga como valor retenido para el topic.
aPublishPropertiesconst TsgcWSMQTTPublish_PropertiesPropiedades opcionales de MQTT 5.0, normalmente utilizadas para establecer el tipo de contenido (por ejemplo image/png) al enviar datos binarios.

Valor de Retorno

Identificador de paquete para el paquete PUBLISH; cero para QoS 0. Permite la correlación con eventos de confirmación. (Word)

Observaciones

Sobrecarga binaria para archivos, tramas protobuf, imágenes y otras cargas no textuales. El stream se lee completamente antes de la serialización, por lo que las cargas muy grandes deben fragmentarse en la capa de aplicación para evitar grandes asignaciones de memoria. El comportamiento de QoS, Retain y las propiedades es idéntico al de la sobrecarga de texto.

Ejemplo

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

Volver a Métodos