介绍 

        MQTT(消息队列遥测传输)是一种轻量级消息传递协议,专为资源受限的环境而设计。MQTT 广泛应用于物联网 (IoT) 和机器对机器 (M2M) 通信。

        本文将讨论如何在 .NET 7 中实现 MQTT 消费者。我们将使用 MQTTnet 库,这是 C# 中的高性能 MQTT 客户端库。

设置环境

        要开始使用 .NET 7,您必须在系统上安装它。您可以从 .NET 官方网站下载并安装 .NET 7。

        要使用 MQTTnet,您需要将 MQTTnet NuGet 包添加到您的项目中。您可以使用 Visual Studio 中的 NuGet 包管理器或 dotnet CLI 来完成此操作。

dotnet add package MQTTnet

实现 MQTT 消费者

您需要创建一个新的控制台应用程序来在 .NET 7 中实现 MQTT 消费者。在此示例中,我们将订阅一个主题并从 MQTT 代理接收消息。

using System;
using System.Threading;
using System.Threading.Tasks;
using MQTTnet;
using MQTTnet.Client;
using MQTTnet.Client.Options;
using MQTTnet.Client.Subscribing;
using MQTTnet.Protocol;
class Program {
    static async Task Main(string[] args) {
        var factory = new MqttFactory();
        var client = factory.CreateMqttClient();
        var options = new MqttClientOptionsBuilder().WithTcpServer("localhost", 1883).WithClientId("mqtt_consumer").Build();
        client.UseConnectedHandler(async e => {
            Console.WriteLine("Connected to MQTT broker.");
            var topicFilter = new MqttTopicFilterBuilder().WithTopic("test/topic").Build();
            await client.SubscribeAsync(new MqttClientSubscribeOptionsBuilder().WithTopicFilter(topicFilter).Build());
        });
        client.UseDisconnectedHandler(async e => {
            Console.WriteLine("Disconnected from MQTT broker.");
            await Task.Delay(TimeSpan.FromSeconds(5));
            try {
                await client.ConnectAsync(options, CancellationToken.None);
            } catch {
                Console.WriteLine("Reconnecting to MQTT broker failed.");
            }
        });
        client.UseApplicationMessageReceivedHandler(e => {
            Console.WriteLine($ "Received message on topic '{e.ApplicationMessage.Topic}': {Encoding.UTF8.GetString(e.ApplicationMessage.Payload)}");
        });
        try {
            await client.ConnectAsync(options, CancellationToken.None);
        } catch {
            Console.WriteLine("Connecting to MQTT broker failed.");
        }
        Console.ReadLine();
    }
}

        上述代码创建了一个新的 MQTT 客户端,并订阅了“test/topic”主题。当收到该主题的消息时,会调用 UseApplicationMessageReceivedHandler 方法,并在控制台上显示该消息。

        UseConnectedHandler 和 UseDisconnectedHandler 方法处理连接和断开连接事件。当客户端连接到 MQTT 代理时会调用 UseConnectedHandler 方法,当客户端与 MQTT 代理断开连接时会调用 UseDisconnectedHandler 方法。

结论

        在本文中,我们讨论了如何使用 MQTTnet 库在 .NET 7 中实现 MQTT 消费者。我们创建了一个控制台应用程序,用于订阅主题并从 MQTT 代理接收消息。

        MQTT 是一种功能强大的消息传递协议,可用于各种应用,包括物联网 (IoT) 和 M2M 通信。借助 MQTTnet 库,可以轻松地在 .NET 7 中实现 MQTT 客户端,并且该库提供了一系列功能。

如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/912440.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/912440.shtml
英文地址,请注明出处:http://en.pswp.cn/news/912440.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云上攻防—Docker安全容器逃逸特权模式危险挂载

前言 之前分享的是云服务安全,今天开始云原生安全,安全道路依旧很长。 什么是Docker呢,它是开源的容器化平台,用于开发、部署和运行应用程序。它通过将应用程序及其依赖项打包在轻量级的容器中,实现环境一致性、快速…

2025API 开发工具Apipost 与 Apifox深度对比

在当今数字化时代,API 开发是构建各类软件应用的关键环节。Apipost 和 Apifox 作为两款知名的 API 开发工具,它们在实际开发场景中表现究竟如何呢?接下来,让我们从多个功能点进行深入对比。 一、API 设计功能 接口定义与参数设置…

从零开始搭建Windows AI开发环境:QWQ-32B部署+Cursor插件优化实战

文章目录 前言1.安装Ollama2.QwQ-32B模型安装与运行3.Cursor安装与配置4. 简单使用测试5. 调用本地大模型6. 安装内网穿透7. 配置固定公网地址总结 前言 本方案提出了一种基于Windows系统的智能化开发平台搭建策略,通过融合Cursor智能编程平台、Ollama模型运行框架…

PostgreSQL 中,若需显示 不在 `IN` 子句列表中的数据

在 PostgreSQL 中,若需显示 不在 IN 子句列表中的数据,可以通过以下方法实现: 方法 1:使用 NOT IN(注意 NULL 值) 直接筛选不包含在 IN 列表中的记录: SELECT * FROM your_table WHERE your_c…

嘉讯科技:医疗信息化、数字化、智能化三者之间的关系和区别

随着技术的不断发展,医疗行业也在发生着巨大的变化。在这个过程中,医疗信息化、数字化、智能化成为三个重要方向。这些变化不仅带来了医疗技术的进步,而且大大提高了医疗服务的质量和效率。 一、医疗信息化 医疗信息化是指医疗行业应用信息技…

Windows VMWare Centos Docker部署Springboot应用

接上篇文章:Windows VMWare Centos环境下安装Docker并配置MySql-CSDN博客文章浏览阅读370次,点赞3次,收藏4次。Windows VMWare Centos环境下安装Docker并配置MySqlhttps://blog.csdn.net/u013224722/article/details/148928081 一、新建Sprin…

JavaEE-Spring事务和事务的传播机制

事务 什么是事务 事务是⼀组操作的集合, 是⼀个不可分割的操作. 事务会把所有的操作作为⼀个整体, ⼀起向数据库提交或者是撤销操作请求. 所以这组操作要么同时成功, 要么同时失败. 为什么需要事务? 事务的操作 Spring 中事务的实现 创建好数据库后就是配置数据库相关的配…

共享经济视域下社群经济的本质重构:基于开源AI智能名片链动2+1模式S2B2C商城小程序源码的实证研究

摘要:社群经济在互联网时代呈现爆发式增长,但传统社群运营存在情感维系成本高、商业转化路径长、技术赋能不足等痛点。本文以共享经济理论为框架,结合开源AI智能名片链动21模式S2B2C商城小程序源码的技术实践,提出“思想-资源-机会…

测试方法的分类

静态测试 核心分类依据:根据是否执行程序分为静态测试和动态测试 静态测试方法 执行特征:不运行被测程序,通过人工检查或工具分析进行测试 测试对象:主要针对文档(包括需求文档、设计文档等)和源代码 实…

查看CPU支持的指令集和特性

1)gcc -c -Q -marchnative --helptarget 2)结果 The following options are target specific: -m128bit-long-double [enabled] -m16 [disabled] -m32 [disabled…

【大模型应用开发】Unity结合大模型实现智能问答功能

零、最终效果 Unity结合大模型实现智能问答功能 一、文本自动换行效果 新建一个Text文本,设置文本的最大宽度 然后添加Content Size Fitter组件,Vertical Fit选择Preferred Size 二、背景随文本长度变化效果 新建一个Image作为文本的背景&#xff0…

Python爬虫-爬取汽车之家全部汽车品牌及车型数据

前言 本文是该专栏的第64篇,后面会持续分享python爬虫干货知识,记得关注。 本文,笔者将基于汽车之家平台,通过Python获取全部的“汽车品牌以及车型”数据。 废话不多说,具体实现思路和详细逻辑,笔者将在正文结合完整代码进行详细介绍。接下来,跟着笔者直接往下看正文详…

签名组件:uniapp 签名组件开发,兼容小程序、H5、App等 电子签名

描述 H5:1. 模拟横屏。2. 提示信息、模拟态也通过模拟横屏显示 小程序:1. 自动横屏展示 APP:1. 自动横屏展示 rn-signature 个性签名组件 组件名 rn-signature 签名组件兼容H5、APP、小程序。横屏签名效果。 效果展示 h5端 小程序端 APP 端…

第10.4篇 使用预训练的目标检测网络

在PyTorch提供的已经训练好的图像目标检测中,均是R-CNN系列 的网络,并且针对目标检测和人体关键点检测分别提供了容易调用的方 法。针对目标检测的网络,输入图像均要求使用相同的预处理方式,即先将每张图像的像素值预处理到0~1之…

基于开源链动2+1模式AI智能名片S2B2C商城小程序源码的运营机制沉淀与规范构建研究

摘要:在数字化商业生态中,运营机制的沉淀与规范构建是企业实现可持续增长的核心命题。本文以开源链动21模式、AI智能名片、S2B2C商城小程序源码为技术基座,提出“机制设计-数据沉淀-规范生成-迭代优化”的四阶闭环模型。通过某健康食品品牌的…

js代码05

题目 好的,我们进入异步编程的“终极形态”:async/await。 async/await 是在 ES2017 (ES8) 中引入的,它并不是一个全新的功能,而是建立在 Promise 之上的语法糖 (Syntactic Sugar)。它的目标是让我们能够以一种看似同步、更符合…

PyTorch里.pt和.pth的区别

在PyTorch中,.pt和.pth文件均用于保存模型,但两者在设计初衷、存储内容和使用场景上存在差异。以下是详细对比: 1. 核心区别 特性.pt文件.pth文件存储内容完整模型(结构参数优化器状态等)仅模型参数(state…

windows电脑如何安装iis作为部署服务器并

1.控制面板-程序-启用或关闭windows功能-勾选iis(缩写) 2.安装好iis后在开始中搜索iis就可以看见安装好了的管理器了

解锁ChatGPT高级玩法:模块化提示词库开发指南

目录 🔍 一、引言:为什么需要模块化提示词库?🧱 二、模块化提示词库设计原理2.1 核心架构2.2 模块功能说明 ⚙️ 三、模块化提示词库开发实践(附Python源码)3.1 环境配置3.2 模块化提示词生成器3.3 提示词组…

Spring Boot 实现不同用户不同访问权限

前提 近期在使用 Spring Boot,用户角色被分为管理者和普通用户;角色不同,权限也就存在不同。 在 Spring Boot 里实现不同用户拥有不同访问权限,可借助 Spring Security 框架达成。 实现 1. 添加必要依赖 首先要在 pom.xml 里…