TsgcWSPClient_MQTTMétodos › PublishAndWait

PublishAndWait Método

Publica un mensaje y bloquea hasta que el broker lo confirma o transcurre el tiempo de espera.

Sobrecargas

Sobrecarga 1

Sintaxis

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

Parámetros

NombreTipoDescripción
aTopicconst StringNombre del topic de destino para el paquete PUBLISH.
aTextconst StringCarga útil UTF-8 del mensaje.
aQoSTmqttQoSGarantía de entrega. Solo QoS 1 y QoS 2 producen una confirmación del broker, por lo que QoS 0 devuelve True inmediatamente después de que el paquete se escribe.
aRetainBooleanIndicador de retención reenviado al broker.
aPublishPropertiesconst TsgcWSMQTTPublish_PropertiesPropiedades de publicación MQTT 5.0 opcionales. Pase nil cuando no sean necesarias.
aTimeoutconst IntegerTiempo máximo, en milisegundos, para esperar el PUBACK (QoS 1) o PUBCOMP (QoS 2) correspondiente. El valor predeterminado es 10000.

Valor de Retorno

True cuando el broker confirmó el mensaje antes de que expirase el tiempo de espera; False cuando el tiempo de espera expiró o la sesión se cayó. (Boolean)

Observaciones

Sobrecarga de texto síncrona. Útil para flujos de trabajo de solicitud/respuesta y scripts de inicio donde el llamante debe saber que el mensaje llegó al broker antes de continuar. No debe invocarse desde los propios callbacks de eventos del componente, ya que estos ya están serializados en el hilo de transporte y causarían un bloqueo.

Ejemplo

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

Sobrecarga 2

Sintaxis

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

Parámetros

NombreTipoDescripción
aTopicconst StringNombre del topic de destino para el paquete binario PUBLISH.
aStreamconst TStreamFlujo que proporciona los bytes sin procesar enviados como carga útil. Leer en su totalidad antes de la transmisión.
aQoSTmqttQoSGarantía de entrega aplicada al paquete PUBLISH.
aRetainBooleanIndicador de retención reenviado al broker.
aPublishPropertiesconst TsgcWSMQTTPublish_PropertiesPropiedades opcionales de MQTT 5.0, comúnmente utilizadas para establecer el tipo de contenido en cargas útiles binarias.
aTimeoutconst IntegerMáximo de milisegundos que se esperan para la confirmación de QoS 1/2. El valor predeterminado es 10000.

Valor de Retorno

True en caso de confirmación, False en caso de tiempo de espera agotado o desconexión. (Boolean)

Observaciones

Sobrecarga binaria síncrona, adecuada para flujos de carga de archivos donde el código que realiza la llamada debe confirmar que cada fragmento fue almacenado por el broker. Evite invocarla desde manejadores de eventos y use tiempos de espera realistas al enviar cargas grandes a través de redes lentas.

Ejemplo

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;

Volver a Métodos