すべてのプロダクト
Search
ドキュメントセンター

Short Message Service:Lightweight Message Queue (旧 MNS) の消費デモ

最終更新日:Dec 20, 2025

このトピックでは、主要なプログラミング言語のメッセージ消費サンプルを提供します。対応するソフトウェア開発キット (SDK) パッケージをダウンロードして、キューからメッセージをプルできます。

SDK バージョンガイド

Alibaba Cloud Short Message Service は、2 つのソフトウェア開発キット (SDK) バージョン、V1.0 SDKV2.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

SDK for Java

java-dysmsapi-20180501

IDE で Alibaba Cloud SDK for Java を使用する

Python

SDK for Python

python-dysmsapi-20180501

IDE で Alibaba Cloud SDK for Python を使用する

PHP

SDK for PHP

php-dysmsapi-20180501

IDE で Alibaba Cloud SDK for PHP を使用する

Go

SDK for Go

go-dysmsapi-20180501

IDE で Alibaba Cloud SDK for Go を使用する

TypeScript

SDK for TypeScript

typescript-dysmsapi-20180501

IDE で Alibaba Cloud SDK for Node.js を使用する

C++

Swift SDK

cpp-dysmsapi-20180501

/

C#

SDK for C#

csharp-dysmsapi-20180501

IDE で Alibaba Cloud .NET SDK を使用する

Swift

SDK for Swift

swift-dysmsapi-20180501

/

メッセージ受信サンプル

説明

API を呼び出す前に、SDK がアクセス認証情報を読み取れるように環境変数を設定する必要があります。AccessKey ID と AccessKey Secret の環境変数名は、それぞれ ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_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 環境に正しく設定されていないために発生します。この問題は、次の手順に従って手動で解決できます。

  1. システム証明書のエクスポートと環境変数の設定:次のコマンドを実行して、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
  2. シンボリックリンクを作成して Python の OpenSSL 設定を修正:Python の OpenSSL 設定に証明書が欠落している場合は、次のコマンドを実行して手動でシンボリックリンクを作成できます。コマンド内のパスを、ローカルの Python バージョンの実際のインストールパスに置き換えてください。

    # 3.9 はバージョン番号の例です。ローカルマシンにインストールされている Python のバージョンに基づいてパスを調整してください。
    ln -s /etc/ssl/* /Library/Frameworks/Python.framework/Versions/3.9/etc/openssl
  3. ターミナルの再起動とキャッシュのクリア:上記の手順を完了したら、ターミナルを閉じて再度開き、環境変数が有効になるようにする必要があります。その後、考えられるキャッシュをクリアして、再度 WebSocket への接続を試みることができます。

上記の手順で、不正な証明書設定に起因する接続の問題を解決できます。問題が解決しない場合は、宛先サーバーの証明書設定が正しいかどうかを確認する必要があります。