TsgcWSPClient_MQTTMétodos › PublishAndWait

PublishAndWait Method

Publica uma mensagem e bloqueia até que o broker a confirme ou o timeout expire.

Overloads

Overload 1

Sintaxe

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

Parâmetros

NameTypeDescrição
aTopicconst StringNome do tópico de destino para o pacote PUBLISH.
aTextconst StringCarga útil UTF-8 da mensagem.
aQoSTmqttQoSGarantia 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.
aRetainBooleanFlag de retain encaminhado ao broker.
aPublishPropertiesconst TsgcWSMQTTPublish_PropertiesPropriedades de publish opcionais do MQTT 5.0. Passe nil quando não forem necessárias.
aTimeoutconst IntegerTempo máximo, em milissegundos, para aguardar o PUBACK correspondente (QoS 1) ou PUBCOMP (QoS 2). O valor padrão é 10000.

Valor de retorno

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)

Observações

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.

Exemplo

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

Sobrecarga 2

Sintaxe

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

NameTypeDescrição
aTopicconst StringNome do tópico de destino para o pacote PUBLISH binário.
aStreamconst TStreamStream que fornece os bytes brutos enviados como payload. Lido por completo antes da transmissão.
aQoSTmqttQoSGarantia de entrega aplicada ao pacote PUBLISH.
aRetainBooleanFlag de retain encaminhado ao broker.
aPublishPropertiesconst TsgcWSMQTTPublish_PropertiesPropriedades opcionais do MQTT 5.0, comumente utilizadas para definir o Content Type para payloads binários.
aTimeoutconst IntegerMilissegundos máximos a aguardar pela confirmação de QoS 1/2. O padrão é 10000.

Valor de retorno

True em caso de confirmação, False em caso de timeout ou desconexão. (Boolean)

Observações

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.

Exemplo

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;

Voltar para Métodos