TsgcWSPClient_MQTTMéthodes › PublishAndWait

PublishAndWait Méthode

Publie un message et se bloque jusqu'à ce que le courtier l'acquitte ou que le délai d'expiration soit dépassé.

Surcharges

Surcharge 1

Syntaxe

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

Paramètres

NomTypeDescription
aTopicconst String Nom du topic cible pour le paquet PUBLISH.
aTextconst String Charge utile UTF-8 du message.
aQoS TmqttQoSGarantie de livraison. Seuls QoS 1 et QoS 2 produisent un accusé de réception du courtier, donc QoS 0 retourne True immédiatement après l'écriture du paquet.
aRetainBoolean Indicateur de rétention transmis au courtier.
aPublishPropertiesconst TsgcWSMQTTPublish_PropertiesPropriétés de publication MQTT 5.0 optionnelles. Passez nil si non nécessaire.
aTimeoutconst Integer Durée maximale, en millisecondes, d'attente du PUBACK correspondant (QoS 1) ou PUBCOMP (QoS 2). Par défaut 10000.

Valeur de retour

True lorsque le broker a accusé réception du message avant l'expiration du délai d'attente ; False lorsque le délai d'attente a expiré ou que la session s'est interrompue. (Boolean)

Remarques

Surcharge textuelle synchrone. Utile pour les flux de travail requête/réponse et les scripts de démarrage où l'appelant doit savoir que le message est parvenu au courtier avant de continuer. Ne doit pas être invoquée depuis les propres rappels d'événements du composant, car ceux-ci sont déjà sérialisés sur le thread de transport et provoqueraient un blocage.

Exemple

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

Surcharge 2

Syntaxe

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

Paramètres

NomTypeDescription
aTopicconst String Nom du topic cible pour le paquet PUBLISH binaire.
aStreamconst TStream Flux fournissant les octets bruts envoyés comme charge utile. À lire entièrement avant transmission.
aQoS TmqttQoSGarantie de livraison appliquée au paquet PUBLISH.
aRetainBoolean Indicateur de rétention transmis au courtier.
aPublishPropertiesconst TsgcWSMQTTPublish_PropertiesPropriétés MQTT 5.0 optionnelles, couramment utilisées pour définir le Content Type des charges utiles binaires.
aTimeoutconst Integer Nombre maximal de millisecondes à attendre pour l'accusé de réception QoS 1/2. Par défaut : 10000.

Valeur de retour

True lors de l'accusé de réception, False en cas de délai d'attente ou de déconnexion. (Boolean)

Remarques

Surcharge binaire synchrone adaptée aux flux de téléchargement de fichiers où le code appelant doit confirmer que chaque fragment a été stocké par le courtier. Évitez de l'invoquer depuis les gestionnaires d'événements, et utilisez des délais d'attente réalistes lors de l'envoi de grandes charges utiles sur des réseaux lents.

Exemple

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;

Retour aux méthodes