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