TsgcWSPClient_MQTT › Yöntemler › PublishAndWait
Bir mesaj yayımlar ve broker onaylayana veya zaman aşımı dolana kadar bloklar.
function PublishAndWait(const aTopic, aText: String; aQoS: TmqttQoS = mtqsAtMostOnce; aRetain: Boolean = False; const aPublishProperties: TsgcWSMQTTPublish_Properties = nil; const aTimeout: Integer = 10000): Boolean;
| Name | Type | Açıklama |
|---|---|---|
aTopic | const String | PUBLISH paketi için hedef konu adı. |
aText | const String | Mesajın UTF-8 yükü. |
aQoS | TmqttQoS | Teslimat garantisi. Yalnızca QoS 1 ve QoS 2 bir broker onayı üretir, bu nedenle QoS 0 paket yazıldıktan hemen sonra True döndürür. |
aRetain | Boolean | Broker'a iletilen Retain bayrağı. |
aPublishProperties | const TsgcWSMQTTPublish_Properties | İsteğe bağlı MQTT 5.0 yayınlama özellikleri. Gerekmediğinde nil geçirin. |
aTimeout |
const Integer | Eşleşen PUBACK (QoS 1) veya PUBCOMP (QoS 2) için beklenecek milisaniye cinsinden maksimum süre. Varsayılan olarak 10000. |
Broker mesajı zaman aşımı dolmadan onayladığında True; bekleme zaman aşımına uğradığında veya oturum düştüğünde False. (Boolean)
Eşzamanlı metin aşırı yüklemesi. Çağıranın devam etmeden önce mesajın broker'a ulaştığını bilmesi gereken istek/yanıt iş akışları ve başlangıç komut dosyaları için kullanışlıdır. Bileşenin kendi olay geri çağırmalarından çağrılmamalıdır, çünkü bunlar zaten taşıma iş parçacığında serileştirilmiştir ve kilitlenmeye neden olur.
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 | Açıklama |
|---|---|---|
aTopic | const String | İkili PUBLISH paketi için hedef konu adı. |
aStream | const TStream | Yük olarak gönderilen ham baytları sağlayan stream. İletimden önce tamamen okunur. |
aQoS | TmqttQoS | PUBLISH paketine uygulanan teslimat garantisi. |
aRetain | Boolean | Broker'a iletilen Retain bayrağı. |
aPublishProperties | const TsgcWSMQTTPublish_Properties | İsteğe bağlı MQTT 5.0 özellikleri, genellikle ikili yükler için Content Type ayarlamak amacıyla kullanılır. |
aTimeout |
const Integer | QoS 1/2 onayını beklemek için maksimum milisaniye. Varsayılan 10000. |
Onaylandığında True, zaman aşımı veya bağlantı kesilmesinde False. (Boolean)
Çağıran kodun her parçanın broker tarafından depolandığını onaylaması gereken dosya yükleme akışlarına uygun eşzamanlı ikili aşırı yükleme. Bunu olay işleyicilerinden çağırmaktan kaçının ve yavaş ağlar üzerinden büyük yükler gönderirken gerçekçi zaman aşımları kullanın.
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;