このトピックでは、主要なプログラミング言語のメッセージ消費サンプルを提供します。対応するソフトウェア開発キット (SDK) パッケージをダウンロードして、キューからメッセージをプルできます。
SDK バージョンガイド
Alibaba Cloud Short Message Service は、2 つのソフトウェア開発キット (SDK) バージョン、V1.0 SDK と V2.0 SDK を提供しています。V2.0 SDK は最新バージョンであり、V1.0 SDK と同じ API 機能を提供します。V1.0 SDK と比較して、V2.0 SDK はより堅牢で使いやすく、より多くのプログラミング言語をサポートしています。また、V1.0 SDK に存在するシングルクライアントのスレッドセーフの問題も解決されており、より良い開発者エクスペリエンスを提供します。
V1.0 SDK はメンテナンスが終了しています。V2.0 SDK の使用を推奨します。V1.0 SDK を使用している場合は、V2.0 SDK にアップグレードする必要があります。
SDK のダウンロードアドレス
国際 SMS SDK は、複数のプログラミング言語をサポートしています。SDK のインストール方法は OpenAPI Portal で確認できます。また、GitHub でソースコードとインストールガイドを閲覧することもできます。ご利用のプログラミング言語の標準的な依存関係管理ツールを使用して SDK をインストールすることを推奨します。
言語 | SDK のインストール方法 | GitHub アドレス | クイックスタート |
Java | |||
Python | |||
PHP | |||
Go | |||
TypeScript | |||
C++ | / | ||
C# | |||
Swift | / |
メッセージ受信サンプル
API を呼び出す前に、SDK がアクセス認証情報を読み取れるように環境変数を設定する必要があります。AccessKey ID と AccessKey Secret の環境変数名は、それぞれ ALIBABA_CLOUD_ACCESS_KEY_ID と ALIBABA_CLOUD_ACCESS_KEY_SECRET です。設定の詳細については、環境変数の設定手順をご参照ください。
Java デモ
package com.alicom.mns.sample;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.alicom.mns.tools.inter.DefaultAlicomMessagePuller;
import com.alicom.mns.tools.inter.MessageListener;
import com.aliyun.mns.model.Message;
/**
* これは、SMS MNS キューメッセージ消費のデモです
* MessageType: SmsReport
*/
public class ReceiveDemo {
static class MyMessageListener implements MessageListener {
@Override
public boolean dealMessage(Message message) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("message receiver time from mns:" + format.format(new Date()));
System.out.println("message handle: " + message.getReceiptHandle());
System.out.println("message body: " + message.getMessageBodyAsString());
System.out.println("message id: " + message.getMessageId());
System.out.println("message dequeue count:" + message.getDequeueCount());
System.out.println("Thread:" + Thread.currentThread().getName());
try {
// ここから独自のコードを開始してください
} catch (Throwable e) {
// 独自のコードによって引き起こされた例外。メッセージは削除されず、再度取得できます
return false;
}
// フォーマットエラーの場合、メッセージは削除されます
return true;
}
}
public static void main(String[] args) {
DefaultAlicomMessagePuller puller = new DefaultAlicomMessagePuller();
// 非同期スレッドのサイズを設定します
puller.setConsumeMinThreadSize(6);
puller.setConsumeMaxThreadSize(16);
puller.setThreadQueueSize(200);
puller.setPullMsgThreadSize(1);
// デバッグ時にのみ有効にし、稼働状態では無効にする必要があります
puller.openDebugLog(false);
String regionIdForPop = "ap-southeast-1";
String endpointNameForPop = "ap-southeast-1";
// シンガポールリージョンの OpenAPI (ドメイン: dysmsapi.ap-southeast-1.aliyuncs.com) に SMS リクエストを送信する場合
// 以下を使用してください
String domainForPop = "dybaseapi.ap-southeast-1.aliyuncs.com";
String mnsAccountEndpoint = "http://1493622401794734.mns.ap-southeast-1.aliyuncs.com";
// インドネシア (ジャカルタ) リージョンの OpenAPI (ドメイン: dysmsapi.ap-southeast-5.aliyuncs.com) に SMS リクエストを送信する場合
// 以下を使用してください
//String domainForPop = "dybaseapi.ap-southeast-5.aliyuncs.com";
//String mnsAccountEndpoint = "http://1493622401794734.mns.ap-southeast-5.aliyuncs.com";
// ドイツ (フランクフルト) リージョンの OpenAPI (ドメイン: dysmsapi.eu-central-1.aliyuncs.com) に SMS リクエストを送信する場合
//String domainForPop = "dybaseapi.eu-central-1.aliyuncs.com";
//String mnsAccountEndpoint = "http://1493622401794734.mns.eu-central-1.aliyuncs.com";
// 米国東部 (バージニア) リージョンの OpenAPI (ドメイン: dysmsapi.us-east-1.aliyuncs.com) に SMS リクエストを送信する場合
//String domainForPop = "dybaseapi.us-east-1.aliyuncs.com";
//String mnsAccountEndpoint = "http://1493622401794734.mns.us-east-1.aliyuncs.com";
// AccessKey と SecretKey は Alibaba Cloud コンソールから取得できます
String accessKeyId = "";
String accessKeySecret = "";
//SmsReport
String messageType = "SmsReport";
// QueueName は Alibaba Cloud SMS コンソールから取得できます
// パターン: Alicom-Queue-{UID}-{messageType}
String queueName = "";
puller.startReceiveMsgForVPC(accessKeyId, accessKeySecret, messageType, queueName, regionIdForPop,
endpointNameForPop, domainForPop, mnsAccountEndpoint, new MyMessageListener());
// または、IAcsClient を初期化します (accessKeySecret 不要)
//puller.startReceiveMsg(acsClient, messageType, queueName, new MyMessageListener(), mnsAccountEndpoint);
}
}
よくある質問
macOS で Python SDK を統合する際の「SSL: CERTIFICATE_VERIFY_FAILED」エラー
macOS で Python SDK を統合する際に、なぜ「SSL: CERTIFICATE_VERIFY_FAILED」例外が発生するのですか。完全なエラーメッセージは `websocket closed due to [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1000)` です。
WebSocket に接続する際、OpenSSL がサーバー証明書の認証に失敗することがあります。この問題は通常、必要なルート証明書が Python 環境に正しく設定されていないために発生します。この問題は、次の手順に従って手動で解決できます。
システム証明書のエクスポートと環境変数の設定:次のコマンドを実行して、macOS システムからすべての証明書をファイルにエクスポートします。次に、このファイルへのパスを Python および関連ライブラリのデフォルトの証明書パスとして設定します。
security find-certificate -a -p > ~/all_mac_certs.pem export SSL_CERT_FILE=~/all_mac_certs.pem export REQUESTS_CA_BUNDLE=~/all_mac_certs.pemシンボリックリンクを作成して Python の OpenSSL 設定を修正:Python の OpenSSL 設定に証明書が欠落している場合は、次のコマンドを実行して手動でシンボリックリンクを作成できます。コマンド内のパスを、ローカルの Python バージョンの実際のインストールパスに置き換えてください。
# 3.9 はバージョン番号の例です。ローカルマシンにインストールされている Python のバージョンに基づいてパスを調整してください。 ln -s /etc/ssl/* /Library/Frameworks/Python.framework/Versions/3.9/etc/opensslターミナルの再起動とキャッシュのクリア:上記の手順を完了したら、ターミナルを閉じて再度開き、環境変数が有効になるようにする必要があります。その後、考えられるキャッシュをクリアして、再度 WebSocket への接続を試みることができます。
上記の手順で、不正な証明書設定に起因する接続の問題を解決できます。問題が解決しない場合は、宛先サーバーの証明書設定が正しいかどうかを確認する必要があります。