示例代码

更新时间:

本文提供云消息队列 MQTT 版的云端.NET SDK示例代码。

Demo示例

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 版的云端接入点。
        string domain = "post-cn-******-server-internet.mqtt.aliyuncs.com";  
        //云消息队列 MQTT 版的实例ID。
        string instanceId = "post-cn-******";  
        //AccessKey ID。
        string ak = "******"; 
        //AccessKey Secret。
        string sk = "******"; 
        //父级Topic。
        string firstTopic = "topicA";
        //Group ID。
        string gid = "GID-test";
        int port = 5672;
        ChannelConfig channelConfig = new ChannelConfig(domain, instanceId, ak, sk, port);
        ServerConsumer serverConsumer = new ServerConsumer(channelConfig);
        serverConsumer.Start();
        // 订阅一级Topic。
        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 版实例的接入点。客户端通过接入点连接云消息队列 MQTT 版服务端。

使用云端SDK接入云消息队列 MQTT 版时,需要填写的接入点格式如下:

重要

仅实例内核版本为V3.3.0且实例地域属于中国内地的实例支持云端SDK接入。

  • 公网接入点MQTT实例ID-server-internet.mqtt.aliyuncs.com

  • VPC 接入点MQTT实例ID-server-internal.mqtt.aliyuncs.com

MQTT实例ID可在云消息队列 MQTT 版控制台实例详情页面的基础信息区域查看。

instanceId

您在云消息队列 MQTT 版控制台创建的实例的ID。可在云消息队列 MQTT 版控制台实例详情页面的基础信息区域查看。

accessKey

您在阿里云账号管理控制台中创建的AccessKey ID,用于身份认证。获取方式,请参见创建AccessKey

说明

AccessKey IDAccessKey Secret建议从环境变量或配置文件中读取,避免硬编码可能造成的账号泄露风险。

secretKey

您在阿里云账号管理控制台中创建的AccessKey Secret,用于身份认证。获取方式,请参见创建AccessKey

说明

AccessKey IDAccessKey Secret建议从环境变量或配置文件中读取,避免硬编码可能造成的账号泄露风险。

firstTopic

您在云消息队列 MQTT 版控制台创建的Topic。

gid

您在云消息队列 MQTT 版控制台创建的Group的ID。

port

协议端口。端口和使用的协议必须匹配,云端SDK中,该参数值固定为5672。