Commands and Jobs
EMQX Fleets は、デバイスに対して操作を送信するために、Commands と Jobs の2つのメカニズムを提供します。これらは異なるインタラクションパターンを持ち、配信保証も異なります。
Commands vs Jobs
| Commands | Jobs | |
|---|---|---|
| インタラクションパターン | リアルタイムのリクエスト-レスポンス | 非同期バッチ送信、デバイスごとの追跡あり |
| 対象 | 単一のデバイス | 1台以上のデバイスまたはThing Group |
| 配信 | 即時、デバイスがオンラインである必要あり | キューイングされ、デバイスは再接続時に取得 |
| 実行追跡 | 単一の実行記録とステータス | デバイスごとの実行記録と完全なライフサイクル |
| タイムアウト | あり(コマンドごとに設定可能) | ジョブレベルおよびステップごとのタイムアウト |
| 典型的な用途 | 今すぐアクションをトリガー(ロック、アンロック、再起動) | フリートへの変更展開(ファームウェア更新、設定プッシュ) |
Commands
Command は、単一の接続中のデバイスとのリアルタイムインタラクションです。Fleets は MQTT 経由でコマンドリクエストをデバイスにパブリッシュし、レスポンスを待ちます。実行は SENT 状態で開始し、デバイスが応答するか TTL が切れると、終了状態(SUCCEEDED、FAILED、REJECTED、TIMED_OUT、または CANCELED)に遷移します。
Commands は以下の場合に適しています:
- 操作を受け取るためにデバイスがオンラインである必要がある
- 即時のレスポンスが必要な場合
- 操作対象が単一のデバイスである場合
詳細は Send Commands をご覧ください。
Jobs
Job は、1台以上のデバイスに非同期で送信される操作です。ジョブが保留中になるとデバイスに通知され、デバイスはジョブドキュメントを取得して実行し、ステータスを Fleets に報告します。各対象デバイスには独立した実行記録とステータスがあります。
Jobs は以下の場合に適しています:
- 多数のデバイスに操作をプッシュしたい場合
- デバイスが断続的にオフラインになる可能性がある場合(ジョブはキューイングされ、再接続時に配信される)
- デバイスごとの実行進捗を時間をかけて追跡したい場合
詳細は Manage Jobs をご覧ください。
実行ステータス
Command 実行ステータス
| ステータス | 意味 |
|---|---|
SENT | コマンドがデバイスにパブリッシュされ、応答待ち |
SUCCEEDED | デバイスが成功結果を返した |
FAILED | デバイスが失敗を返した |
REJECTED | デバイスがコマンドを拒否した |
TIMED_OUT | タイムアウト期間内に応答なし |
CANCELED | コマンドがキャンセルされた |
Job 実行ステータス
| ステータス | 意味 |
|---|---|
QUEUED | ジョブが保留中で、デバイスの取得待ち |
IN_PROGRESS | デバイスがジョブを開始した |
SUCCEEDED | デバイスが正常に完了を報告した |
FAILED | デバイスが失敗を報告した |
REJECTED | デバイスがジョブを拒否した |
TIMED_OUT | デバイスがタイムアウト内にジョブを完了しなかった |
CANCELED | クラウド側で実行がキャンセルされた |
REMOVED | 実行記録が削除された |