コンテンツにスキップ

Rustで接続する

RustベースのMQTTクライアントを使用してブローカーに接続します。

以下は、ブローカーでTOKEN認証モードが設定されたpaho.mqtt.rustクレートを使用した例です。

以下の例では、シンプルなサブスクライバーを作成し、設定されたトピックにメッセージを送信し、メッセージが受信されるまで待機してから終了します。

例のプログラムを実行する前に、BROKER_URI(例: mqtts://YOUR-BROKER.YOUR-NAMESPACE.cloudflarepubsub.com)、BROKER_TOKEN(有効な認証トークン)、およびBROKER_TOPIC環境変数を設定してください。

# Cargo.tomlに記述
paho-mqtt = "0.11.1"

次の内容でexample.rsというファイルを作成し、cargo runを使用して例をビルドして実行します。

use paho_mqtt::*;
use std::thread;
fn main() {
// MQTTブローカーのホスト名を指定: <broker name>.<namespace>.cloudflarepubsub.com
let uri = std::env::var("BROKER_URI").expect("URIを設定する必要があります");
// あなたのJWTトークン
let jwt = std::env::var("BROKER_TOKEN").expect("JWTを設定する必要があります");
// トピック名を指定
let topic = std::env::var("BROKER_TOPIC").expect("トピックを設定する必要があります");
// MQTTクライアントを設定
let client_opts = CreateOptionsBuilder::new()
.mqtt_version(MQTT_VERSION_5)
.server_uri(uri)
.finalize();
// 接続オプション
let options = ConnectOptionsBuilder::new()
.ssl_options(SslOptions::default())
.clean_start(true)
.password(jwt)
.finalize();
// MQTTクライアントを作成
let cli = Client::new(client_opts).expect("クライアントの作成中にエラーが発生しました");
// ブローカーに接続
cli.connect(options).expect("ブローカーへの接続中にエラーが発生しました");
// メッセージ受信者
let rx = cli.start_consuming();
// トピックにサブスクライブ
cli.subscribe(&topic, 0)
.expect("トピックのサブスクリプション中にエラーが発生しました");
// メッセージを待機開始
let reader = thread::spawn(move || match rx.recv().expect("メッセージ受信中にエラーが発生しました") {
Some(message) => {
println!("{:?}", message);
}
None => {}
});
// メッセージを公開!
cli.publish(Message::new(topic, "私の最初のMQTTメッセージ", 0))
.expect("公開中にエラーが発生しました");
// メッセージを受信するまで待機
let _ = reader.join();
// さようなら
cli.disconnect(DisconnectOptions::default())
.expect("切断中にエラーが発生しました");
}