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("切断中にエラーが発生しました");}