TsgcWSPClient_MQTT › Métodos › PublishAndWait
Publica un mensaje y bloquea hasta que el broker lo confirma o transcurre el tiempo de espera.
function PublishAndWait(const aTopic, aText: String; aQoS: TmqttQoS = mtqsAtMostOnce; aRetain: Boolean = False; const aPublishProperties: TsgcWSMQTTPublish_Properties = nil; const aTimeout: Integer = 10000): Boolean;
| Nombre | Tipo | Descripción |
|---|---|---|
aTopic | const String | Nombre del topic de destino para el paquete PUBLISH. |
aText | const String | Carga útil UTF-8 del mensaje. |
aQoS | TmqttQoS | Garantí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. |
aRetain | Boolean | Indicador de retención reenviado al broker. |
aPublishProperties | const TsgcWSMQTTPublish_Properties | Propiedades de publicación MQTT 5.0 opcionales. Pase nil cuando no sean necesarias. |
aTimeout | const Integer | Tiempo máximo, en milisegundos, para esperar el PUBACK (QoS 1) o PUBCOMP (QoS 2) correspondiente. El valor predeterminado es 10000. |
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)
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.
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;
| Nombre | Tipo | Descripción |
|---|---|---|
aTopic | const String | Nombre del topic de destino para el paquete binario PUBLISH. |
aStream | const TStream | Flujo que proporciona los bytes sin procesar enviados como carga útil. Leer en su totalidad antes de la transmisión. |
aQoS | TmqttQoS | Garantía de entrega aplicada al paquete PUBLISH. |
aRetain | Boolean | Indicador de retención reenviado al broker. |
aPublishProperties | const TsgcWSMQTTPublish_Properties | Propiedades opcionales de MQTT 5.0, comúnmente utilizadas para establecer el tipo de contenido en cargas útiles binarias. |
aTimeout | const Integer | Máximo de milisegundos que se esperan para la confirmación de QoS 1/2. El valor predeterminado es 10000. |
True en caso de confirmación, False en caso de tiempo de espera agotado o desconexión. (Boolean)
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.
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;