ApsaraMQ for MQTT の Cloud SDK for Java は、サーバー側統合のために3つのインターフェイスを提供します。メッセージのパブリッシュには sendMessage、メッセージの消費には subscribeTopic、クライアント接続イベントの追跡には subscribeStatus を使用します。
前提条件
開始する前に、以下を確認してください。
ApsaraMQ for MQTT コンソールで ApsaraMQ for MQTT インスタンスが作成されていること
認証用の AccessKey ペアがあること。詳細については、「AccessKey ペアの取得」をご参照ください。
Cloud SDK for Java がダウンロードされ、プロジェクトに追加されていること。ダウンロードリンクについては、「リリースノート」をご参照ください。
接続パラメーター
server-sdk-{SDK Version}\com\alibaba\mqtt\server\config にある ChannelConfig.class で接続パラメーターを設定します。{SDK Version} は、ご利用のプロジェクトの Cloud SDK for Java のバージョンに置き換えてください。
必須パラメーター
| パラメーター | 型 | 説明 |
|---|---|---|
domain | String | ご利用の ApsaraMQ for MQTT インスタンスのエンドポイント。詳細については、「エンドポイントのフォーマット」をご参照ください。 |
port | Integer | Cloud SDK が使用するポート。プロトコルとポートは一致している必要があります。5672 に設定します。 |
instanceId | String | ApsaraMQ for MQTT インスタンスの ID です。[インスタンスの詳細] ページで確認できます(ApsaraMQ for MQTT コンソール)。 |
accessKey | String | 認証のために Resource Access Management (RAM) コンソールで作成された AccessKey ID。詳細については、「AccessKey ペアの取得」をご参照ください。 |
secretKey | String | RAM コンソールで作成された AccessKey Secret。署名認証にのみ必要です。詳細については、「AccessKey ペアの取得」をご参照ください。 |
エンドポイントのフォーマット
ネットワークアクセス方法に基づいて、エンドポイントのフォーマットを選択します。
| アクセス方法 | エンドポイントのフォーマット |
|---|---|
| パブリック | <instance-id>-server-internet.mqtt.aliyuncs.com |
| VPC | <instance-id>-server-internal.mqtt.aliyuncs.com |
<instance-id> を、基本情報 セクションに一覧表示されているお客様の ApsaraMQ for MQTT インスタンスの ID に置き換えます。[インスタンスの詳細] ページの ApsaraMQ for MQTT コンソール で確認できます。
すべてのリージョンが Cloud SDK アクセスをサポートしているわけではありません。サポートされているリージョンについては、「SDK アクセスリージョン」をご参照ください。
ネットワークパラメーター
ほとんどの場合、デフォルト値は変更せずに機能します。ネットワーク条件で必要な場合にのみ、これらのパラメーターを調整してください。
| パラメーター | 型 | 説明 | 単位 | デフォルト |
|---|---|---|---|---|
networkRecoveryInterval | Integer | TCP 接続が自動的に回復されるまでの時間。 | ミリ秒 | 5000 |
connectionTimeout | Integer | TCP 接続を確立するための最大待機時間。この期間内に接続が確立されない場合、エラーが返されます。 | ミリ秒 | 60000 |
handshakeTimeout | Integer | TCP ハンドシェイクの最大待機時間。この期間内にハンドシェイクが完了しない場合、エラーが返されます。 | ミリ秒 | 10000 |
requestedHeartbeat | Integer | ハートビート信号間の間隔。この間隔内にハートビートが送信されない場合、エラーが返されます。 | 秒 | 60 |
shutdownTimeout | Integer | TCP 接続がクローズされた後、コンシューマーがメッセージの処理を完了するための猶予期間。無期限の処理を許可するには 0 に設定します。 | ミリ秒 | 10000 |
sendMessage
MQTT Topic にメッセージをパブリッシュします。
クラス:
com.alibaba.mqtt.server.ServerProducer
| パラメーター | 型 | 説明 |
|---|---|---|
mqttTopic | String | パブリッシュ先の MQTT Topic。親トピックまたはサブトピックのいずれかを指定します。親トピックは、まず ApsaraMQ for MQTT コンソールで作成します。サブトピックは、コンソールで作成せずにコードで直接指定できます。Topic 階層の詳細については、「基本用語」をご参照ください。 |
payload | byte[] | メッセージ本文。 |
sendCallback | SendCallback | メッセージ送信後に呼び出されるコールバック。このコールバックで送信結果を処理します。 |
指定された Topic が存在しない場合、またはクライアントにその権限がない場合、認証が失敗し、クライアントは ApsaraMQ for MQTT ブローカーから切断されます。
subscribeTopic
親トピックのメッセージをサブスクライブします。
クラス:
com.alibaba.mqtt.server.ServerConsumer
| パラメーター | 型 | 説明 |
|---|---|---|
firstTopic | String | ApsaraMQ for MQTT コンソールで作成された親トピック。詳細については、「基本用語」をご参照ください。 |
messageListener | MessageListener | メッセージが到着したときに呼び出されるコールバック。このコールバックで受信メッセージを処理します。 |
指定された Topic が存在しない場合、またはクライアントにその権限がない場合、認証が失敗し、クライアントは ApsaraMQ for MQTT ブローカーから切断されます。
Cloud SDK はサブトピックのサブスクリプションをサポートしていません。これは、親トピック上のすべてのメッセージを収集・分析するバックエンドアプリケーション向けに設計されています。
subscribeStatus
特定のグループのクライアントステータス通知をサブスクライブします。
クラス:
com.alibaba.mqtt.server.ServerConsumer
| パラメーター | 型 | 説明 |
|---|---|---|
mqttGroupId | String | ApsaraMQ for MQTT コンソールで作成されたグループ ID。詳細については、「基本用語」をご参照ください。 |
statusListener | StatusListener | クライアントステータス通知が到着したときに呼び出されるコールバック。このコールバックでステータスイベントを処理します。 |
関連トピック
基本用語 -- Topic 階層、グループ、その他のコアコンセプト
リリースノート -- SDK バージョンとダウンロードリンク
SDK アクセスリージョン -- Cloud SDK アクセスをサポートするリージョン