TsgcWSPClient_MQTT › Métodos › PublishAndWait
Publica uma mensagem e bloqueia até que o broker a confirme ou o timeout expire.
function PublishAndWait(const aTopic, aText: String; aQoS: TmqttQoS = mtqsAtMostOnce; aRetain: Boolean = False; const aPublishProperties: TsgcWSMQTTPublish_Properties = nil; const aTimeout: Integer = 10000): Boolean;
| Name | Type | Descrição |
|---|---|---|
aTopic | const String | Nome do tópico de destino para o pacote PUBLISH. |
aText | const String | Carga útil UTF-8 da mensagem. |
aQoS | TmqttQoS | Garantia de entrega. Apenas QoS 1 e QoS 2 produzem uma confirmação do broker, portanto QoS 0 retorna True imediatamente após o pacote ser gravado. |
aRetain | Boolean | Flag de retain encaminhado ao broker. |
aPublishProperties | const TsgcWSMQTTPublish_Properties | Propriedades de publish opcionais do MQTT 5.0. Passe nil quando não forem necessárias. |
aTimeout | const Integer | Tempo máximo, em milissegundos, para aguardar o PUBACK correspondente (QoS 1) ou PUBCOMP (QoS 2). O valor padrão é 10000. |
True quando o broker confirmou a mensagem antes que o timeout expirasse; False quando a espera atingiu o timeout ou a sessão caiu. (Boolean)
Sobrecarga de texto síncrona. Útil para fluxos de trabalho de requisição/resposta e scripts de inicialização em que o chamador deve saber que a mensagem chegou ao broker antes de prosseguir. Não deve ser invocada a partir dos próprios callbacks de evento do componente, pois esses já são serializados na thread de transporte e causariam deadlock.
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;
| Name | Type | Descrição |
|---|---|---|
aTopic | const String | Nome do tópico de destino para o pacote PUBLISH binário. |
aStream | const TStream | Stream que fornece os bytes brutos enviados como payload. Lido por completo antes da transmissão. |
aQoS | TmqttQoS | Garantia de entrega aplicada ao pacote PUBLISH. |
aRetain | Boolean | Flag de retain encaminhado ao broker. |
aPublishProperties | const TsgcWSMQTTPublish_Properties | Propriedades opcionais do MQTT 5.0, comumente utilizadas para definir o Content Type para payloads binários. |
aTimeout | const Integer | Milissegundos máximos a aguardar pela confirmação de QoS 1/2. O padrão é 10000. |
True em caso de confirmação, False em caso de timeout ou desconexão. (Boolean)
Sobrecarga binária síncrona adequada a fluxos de upload de arquivos em que o código chamador deve confirmar que cada chunk foi armazenado pelo broker. Evite invocá-la a partir de handlers de eventos e utilize timeouts realistas ao enviar payloads grandes por 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;