TCPクライアントSDKを使用して、ApsaraMQ for RocketMQインスタンスに接続できます。 ビジネスアプリケーションの安定性を確保するために、ApsaraMQ for RocketMQインスタンスがTCPクライアントSDKにデプロイされているリージョンのプライベートTCPエンドポイントを設定します。 このトピックでは、リージョン固有のプライベートTCPエンドポイントと、それらをコードで設定する方法について説明します。
初期リリース日
2019年12月16日
お知らせ
SDKで構成されているエンドポイントを、2023年6月30日より前にリージョン固有のプライベートTCPエンドポイントに変更する必要があります。 リージョン固有のプライベートTCPエンドポイントは、Apache RocketMQのMessage Queueへのアクセスに使用する元のエンドポイントよりも高い安定性を提供します。 2023年6月30日以降、元のエンドポイントを使用してメッセージを送信またはサブスクライブすることはできません。
SDKでリージョン固有のプライベートTCPエンドポイントを設定する前に、次の項目に注意してください。
アプリケーションがリージョン間でApsaraMQ for RocketMQインスタンスを使用しない場合、プロデューサーとコンシューマーの設定を変更する必要はありません。
アプリケーションがリージョン間でApsaraMQ for RocketMQインスタンスを使用している場合、ビジネス要件に基づいて適切な切り替え時間を決定する必要があります。 HTTPエンドポイントを使用して、リージョン間でApsaraMQ for RocketMQインスタンスにアクセスできます。 HTTPクライアントSDKの詳細については、「使用説明書」をご参照ください。
オープンソースSDKまたはAlibaba Cloud SDKで、リージョン固有のプライベートTCPエンドポイントを設定できます。
切り替えが必要かどうかを判断する
ApsaraMQ for RocketMQインスタンスのプライベートTCPエンドポイントにリージョンIDが含まれているかどうかを確認します。 エンドポイントは、http:// xxxx.<region_id>.mq-internal.aliyuncs.com:<port> 形式である必要があります。
エンドポイントにリージョンIDが含まれている場合は、エンドポイントの設定を変更する必要はありません。 例えば、http://xxxx.cn-hangzhou.mq-internal.aliyuncs.com:8080 は、領域IDを含むエンドポイントである。
エンドポイントにリージョンIDが含まれていない場合は、このトピックの手順に記載されている手順に従って、SDKで使用されるエンドポイント情報を再構成する必要があります。 たとえば、http://xxxx.mq-internal.aliyuncs.com:8080 はリージョンIDを含まないエンドポイントです。
背景情報
TCPクライアントSDKを使用してApsaraMQ for RocketMQでメッセージを送信およびサブスクライブする場合は、使用するリソースに関する情報に基づいてリソースパラメーターを設定します。 GROUP_ID、Topic、およびNAMESRV_ADDRパラメーターに指定されているリソースが同じリージョンにデプロイされていることを確認します。
GROUP_ID: ApsaraMQ for RocketMQコンソールで作成したグループのID。
トピック: ApsaraMQ for RocketMQコンソールで作成したトピック。
NAMESRV_ADDR: ApsaraMQ for RocketMQコンソールの [インスタンスの詳細] ページから取得したエンドポイント。
たとえば、ApsaraMQ For RocketMQインスタンスAは中国 (杭州) リージョンにデプロイされ、トピックAとグループAは中国 (杭州) リージョンにデプロイされたクライアントAのインスタンスAに作成されます。 ApsaraMQ for RocketMQインスタンスBは中国 (深セン) などの別のリージョンにデプロイされ、トピックBとグループBは中国 (深セン) リージョンにデプロイされたクライアントBのインスタンスBに作成されます。 以下の点にご注意ください。
トピックAにメッセージを送信またはメッセージをサブスクライブするには、中国 (杭州) リージョンのグループAに属するクライアントAを使用します。
トピックBにメッセージを送信またはメッセージをサブスクライブするには、中国 (深セン) リージョンのグループBに属するクライアントBを使用します。
次の図は、リージョンに対応するエンドポイントを示しています。 
手順
ApsaraMQ for RocketMQコンソールにログインします。
左側のメニュで、インスタンス数をクリックします。
上部のナビゲーションバーで、中国 (杭州) などのリージョンを選択します。 次に、プライベートTCPエンドポイントを表示するインスタンスの名前をクリックします。
インスタンスの詳細 ページで、エンドポイント タブをクリックします。
エンドポイント タブの TCP エンドポイント セクションで、ネットワーク 列の値が イントラネットアクセス である行のプライベートTCPエンドポイントを表示します。

プロデューサーとコンシューマーのコードのエンドポイント設定を変更します。
次のバージョンのAlibaba Cloud SDKは、リージョン固有のプライベートTCPエンドポイントをサポートしています。
次のサンプルコードは、SDK for Javaを使用する場合にエンドポイント設定を変更する方法の例を示しています。
// Make sure that your client version supports changing the endpoint. properties.put(PropertyKeyConst.ONSAddr, "http://xxxx.mq-internal.aliyuncs.com:8080"); // Replace the preceding settings with the following settings. properties.put(PropertyKeyConst.NAMESRV_ADDR, "http://xxxx.cn-hangzhou.mq-internal.aliyuncs.com:8080");次のサンプルコードは、オープンソースのApache RocketMQが提供するJava用SDKを使用する場合に、エンドポイント設定を変更する方法の例を示しています。
// Call the setNamesrvAddr method to specify the endpoint that you obtained from the Message Queue for Apache RocketMQ console. producer.setNamesrvAddr("http://xxxx.cn-hangzhou.mq-internal.aliyuncs.com:8080");