.net 使用MQTT订阅消息

在nuGet下载M2Mqtt V4.3.0版本。(支持.net framework)

订阅主题

复制代码
public void LoadMQQCData()
{
    string enpoint = "xxx.xxx.x.x";//ip地址
    int port = 1883;//端口
    string user = "usrname";//用户名
    string pwd = "pwd";//密码
    string clientid = Guid.NewGuid().ToString(); // 获取一个独一无二的id
    string[] topic = new string[] { "topic" };//订阅主题

    byte[] qosLevels = new byte[] { MqttMsgBase.QOS_LEVEL_AT_LEAST_ONCE }; // qos=1

    MqttClient client = new MqttClient(enpoint, port, false, null, null, MqttSslProtocols.None);
    //消息接受
    client.MqttMsgPublishReceived += new MqttClient.MqttMsgPublishEventHandler(messageReceive);
    //连接Broker
    client.Connect(clientid, user, pwd);
    client.Subscribe(topic, qosLevels);

}

接收数据

复制代码
static void messageReceive(object sender, MqttMsgPublishEventArgs e)
{
    Thread.Sleep(1000 * 30);//等待半分钟 等待质控数据入库
    //接收到的数据
    byte[] Bytes = e.Message;
    //获取站点编号
    try
    {
        string sstation = e.Topic.Substring(e.Topic.IndexOf("qc") - 10, 9);
        if (!string.IsNullOrEmpty(sstation) && sstation.Length == 9)
        { //代表该(SS4201089)站点做了质控
            do some things;
        }
    }
    catch (Exception ex)
    {
        MessageServcie.Instance.OnShowMessageDelegate.Invoke("出错:" + ex.Message.ToString(), false);
    }

}
相关推荐
计算机魔术师4 分钟前
新文章
前端
爱跳舞的烤冷面7 分钟前
自学嵌入式第N天(Linux篇——文件编程)
java·开发语言·前端
IT_陈寒13 分钟前
Vite的热更新突然失效,原来我忽略了这个配置
前端·人工智能·后端
怪奇云呼军15 分钟前
闪电智能VoiceAgent 如何管理呼入、接听、桥接和挂断状态?
java·前端·网络·数据库·人工智能
云浪17 分钟前
Milvus + RAG 实战:《红楼梦》问答助手
前端·人工智能·后端
Escalating_xu23 分钟前
【Linux】进程间通信:从匿名管道、FIFO 到共享内存、消息队列与信号量
java·linux·面试
恋猫de小郭35 分钟前
Dart 3.13 大更新,感觉比 Flutter 更带劲
android·前端·flutter
晓得迷路了36 分钟前
栗子前端技术周刊第 142 期 - DeepSeek Harness、pnpm 12 RC、crypto‑js...
前端·javascript·ai编程
IT机器猫40 分钟前
RabbitMQ基础二
java·spring boot·分布式·spring cloud·log4j·rabbitmq·springamqp
xiaoxiangsiyan42 分钟前
RHCE之2026年全套考点详解
运维·前端·网络·chrome·学习·rhce