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

ApsaraMQ for MQTT:サンプルコード

最終更新日:Jan 14, 2025

このトピックでは、MQTT用ApsaraMQ が提供する .NET 用 Cloud SDK の使用方法に関するサンプルコードを提供します。

デモ

using System.Diagnostics.Tracing;
using System.Text;
using AliyunOnsmqttServerSdk;
using AliyunOnsmqttServerSdk.Common;
using AliyunOnsmqttServerSdk.Config;
using AliyunOnsmqttServerSdk.Model;


class Program
{
    static void Main(string[] args)
    {
        // MQTT用ApsaraMQにアクセスするために使用されるエンドポイント。
        string domain = "post-cn-******-server-internet.mqtt.aliyuncs.com";  
        // MQTT用ApsaraMQインスタンスのID。
        string instanceId = "post-cn-******";  
        // AccessKey ID。
        string ak = "******"; 
        // AccessKeyシークレット。
        string sk = "******"; 
        // 親トピック。
        string firstTopic = "topicA";
        // グループID。
        string gid = "GID-test";
        int port = 5672;
        ChannelConfig channelConfig = new ChannelConfig(domain, instanceId, ak, sk, port);
        ServerConsumer serverConsumer = new ServerConsumer(channelConfig);
        serverConsumer.Start();
        // レベル1トピックを購読します。
        serverConsumer.SubscribeTopic(firstTopic,
            (string msgId, MessageProperties messageProperties, byte[] bArr) =>
            {
                Console.WriteLine($"recv:{msgId}");
            });
        // クライアントのオンラインおよびオフラインイベントを購読します。
        serverConsumer.SubscribeStatus(gid,
            (statusNotice) =>{
                Console.WriteLine($"recv: {statusNotice.ClientId},{statusNotice.EventType}");
            });

        ProducerConfig producerConfig = new ProducerConfig();
        ServerProducer serverProducer = new ServerProducer(channelConfig, producerConfig);
        serverProducer.Start();
        string s = "test";
        Encoding encoding = Encoding.UTF8;
        byte[] payload = encoding.GetBytes(s);
        try
        {
            for(; ; )
            {
                Thread.Sleep(1000);
                SendResult sendResult = serverProducer.SendMessage(firstTopic+"/t2", payload);
                Console.WriteLine($"send: {sendResult.MsgId}");
            }
        }
        catch(Exception e)
        {
            Console.WriteLine(e.StackTrace);
        }
        
    }
}

パラメーターの説明

パラメーター

説明

domain

MQTT用ApsaraMQ インスタンスにアクセスするために使用されるエンドポイント。クライアントを MQTT用ApsaraMQ ブローカーに接続するには、エンドポイントを使用する必要があります。

Cloud SDKを使用してクライアントを MQTT用ApsaraMQ に接続する場合は、次のいずれかの形式でエンドポイントを指定します。

重要

Cloud SDKを使用して接続できるのは、カーネルバージョンが V3.3.0 で、中国本土のリージョンにデプロイされている MQTT用ApsaraMQ インスタンスのみです。

  • パブリックエンドポイント: MQTT用ApsaraMQインスタンスのID-server-internet.mqtt.aliyuncs.com

  • VPCエンドポイント: MQTT用ApsaraMQインスタンスのID-server-internal.mqtt.aliyuncs.com

MQTT用ApsaraMQインスタンスのID は、基本情報インスタンスの詳細MQTT用ApsaraMQ コンソール の ページの セクションで取得できます。

instanceId

MQTT用ApsaraMQ コンソールで作成したインスタンスのID。基本情報インスタンスの詳細MQTT用ApsaraMQ コンソール の ページの セクションでインスタンスのIDを取得できます。

accessKey

ID認証のためにRAM (Resource Access Management) コンソールで作成した AccessKey ID。AccessKey IDの取得方法については、「AccessKeyペアを取得する」をご参照ください。

説明

ハードコーディングによるアカウント情報の漏洩を防ぐため、環境変数または構成ファイルから AccessKey IDAccesskeyシークレット を取得することをお勧めします。

secretKey

ID認証のためにRAMコンソールで作成した Accesskeyシークレット。AccessKeyシークレットの取得方法については、「AccessKeyペアを取得する」をご参照ください。

説明

ハードコーディングによるアカウント情報の漏洩を防ぐため、環境変数または構成ファイルから AccessKey IDAccesskeyシークレット を取得することをお勧めします。

firstTopic

MQTT用ApsaraMQ コンソールで作成したトピック。

gid

MQTT用ApsaraMQ コンソールで作成したグループ。

port

.NET 用 Cloud SDK が使用するポート。.NET 用 Cloud SDK が使用するプロトコルとポートは一致している必要があります。値として 5672 を指定します。