TsgcWSPClient_MQTT › Méthodes › PublishAndWait
Publie un message et se bloque jusqu'à ce que le courtier l'acquitte ou que le délai d'expiration soit dépassé.
function PublishAndWait(const aTopic, aText: String; aQoS: TmqttQoS = mtqsAtMostOnce; aRetain: Boolean = False; const aPublishProperties: TsgcWSMQTTPublish_Properties = nil; const aTimeout: Integer = 10000): Boolean;
| Nom | Type | Description |
|---|---|---|
aTopic | const String
| Nom du topic cible pour le paquet PUBLISH. |
aText | const String
| Charge utile UTF-8 du message. |
aQoS
| TmqttQoS | Garantie 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. |
aRetain | Boolean
| Indicateur de rétention transmis au courtier. |
aPublishProperties | const TsgcWSMQTTPublish_Properties | Propriétés de publication MQTT 5.0 optionnelles. Passez nil si non nécessaire. |
aTimeout | const Integer
| Durée maximale, en millisecondes, d'attente du PUBACK correspondant (QoS 1) ou PUBCOMP (QoS 2). Par défaut 10000. |
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)
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.
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;
| Nom | Type | Description |
|---|---|---|
aTopic | const String
| Nom du topic cible pour le paquet PUBLISH binaire. |
aStream | const TStream
| Flux fournissant les octets bruts envoyés comme charge utile. À lire entièrement avant transmission. |
aQoS
| TmqttQoS | Garantie de livraison appliquée au paquet PUBLISH. |
aRetain | Boolean
| Indicateur de rétention transmis au courtier. |
aPublishProperties | const TsgcWSMQTTPublish_Properties | Propriétés MQTT 5.0 optionnelles, couramment utilisées pour définir le Content Type des charges utiles binaires. |
aTimeout | const Integer
| Nombre maximal de millisecondes à attendre pour l'accusé de réception QoS 1/2. Par défaut : 10000. |
True lors de l'accusé de réception, False en cas de délai d'attente ou de déconnexion. (Boolean)
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.
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;