MQTTnet实现客户端连接

使用MQTTnet(Version=4.3.1.873)库实现多客户端连接多服务端,同时实现断线重连;

如下图所示,开启3个客户端连接3个服务端,当其一个服务端出现异常(服务停止,网络异常无法连接)导致连接断开时,实现每5秒连接一次

MQTT连接服务核心类:业务需求是一个客户端对应的一个MQTT服务,因此按照服务端个数创建对应的客户端连接,实现通过每一个服务端订阅消息,获取数据

using MQTTnet.Client;
using MQTTnet.Diagnostics;
using MQTTnet;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace MqttConnectManage
{
    public class MqttClientManage
    {

        public readonly List<IMqttClient> _clients = new List<IMqttClient>();
        public readonly string[] _serverAdr;
        private List<MqttClientOptions> serverOptions = new List<MqttClientOptions>();
        private readonly IMqttNetLogger logger;
        private readonly CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();

        /// <summary>
        /// 日志记录
        /// </summary>
        /// <param name="logger"></param>
        public MqttClientManage(IMqttNetLogger logger)
        {
            this.logger = logger;
        }
        /// <summary>
        /// 客户端连接信息
        /// </summary>
        /// <param name="brokerAddress"></param>
        /// <param name="port"></param>
        /// <param name="clientId"></param>
        /// <param name="username"></param>
        /// <param name="password"></param&

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/476278.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

libVLC 设置视频宽高比

宽高比是指视频图像的宽度和高度之间的比率。 投影屏幕尺寸一般都按照对角线的大小来定义的。根据图像制式不同&#xff0c;屏幕的长宽比例也有几种格式&#xff1a; 传统影视的宽高比是 4&#xff1a;3&#xff0c;宽屏幕电影的宽高比是 1.85&#xff1a;1&#xff0c;高清晰…

python中获取当前项目的目录

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂 今天介绍一下&#xff0c;如何在python中获取当前项目所在的目录&#xff0c;而不是运行脚本的目录。 class ProjectPaths:# 初始化时获取当前脚本的路径staticmethoddef get_script_dir():…

C# 设置AutoScroll为true没效果的原因分析和解决办法

C#中添加tabControl 分页&#xff0c;将autoscroll设置为true发现缩小窗口没有滚动条效果。该问题出现后&#xff0c;检索发现也有很多人询问了该问题&#xff0c;但是都没有给出解决方案。 原因是内部button的属性Anchor设置为top、left、right、bottom导致的缩小界面窗口也没…

算法:一些DFS的经验

DFS:可以看作是向下遍历树的模拟 剪枝&#xff1a;减少时间复杂度 一个dfs所需要具备的元素&#xff1a; 一&#xff0c;出口 1.出口&#xff1a;每一个进入的dfs的出口&#xff0c;可以是枚举全部元素后退出该dfs,也可以是大于层数或剪枝条件........ 二&#xff0c;向下搜…

操作符(C语言)—第二期

赋值操作符 赋值操作符是一个很棒的操作符&#xff0c;他可以让你得到一个你之前不满意的值。也就是你可以给自己重新赋值。 int weight 120;//体重 weight 89;//不满意就赋值 double salary 10000.0; salary 20000.0;//使用赋值操作符赋值。赋值操作符可以连续使用&#x…

Design Script官方案例解析2:程序简写

在本练习中,我们将调整新的简写技能,以创建由范围和公式定义的精美蛋壳曲面。在本练习中,请注意我们如何串联使用代码块和现有 Dynamo 节点:我们将代码块用于繁重的数据提升,而 Dynamo 节点以可视方式布局来使定义清晰易读。 首先,通过连接上述节点创建曲面。请勿使用数字…

关于VMware Workstation Pro无法与Windows互相进行复制粘贴的解决方案

说明&#xff1a;要实现Windows在wmware虚拟机上实现复制粘贴需要在虚拟机上下载 VMware Tools 工具。 1.查看虚拟机是否下载了VMware Tools工具。&#xff08;下载了vMware Tools 会变成灰色的&#xff09; 2.要是成功安装的话&#xff0c;你在去改一下这里。 设置完到这里理…

Redis缓存穿透的几种解决方案

目录 缓存穿透原理&#xff1a; 缓存穿透一般有几种解决方案&#xff1a; 1.缓存空值 2.使用锁 3.布隆过滤器 优缺点 布隆过滤器误判理解 布隆过滤器的简单使用流程 4.组合方案 那么当我们高并发的访问短链接或者人为的去穿透的时候呢&#xff1f; 最近做项目遇到了缓…

多聆听,少评判

当朋友来找你倾诉、吐槽、诉苦&#xff0c;或是表达情绪的时候&#xff0c;你是怎样回应的&#xff1f; 许多人总有这样的习惯&#xff1a;每当听到朋友的倾诉&#xff0c;或者在网上看到别人诉苦时&#xff0c;第一反应往往是提建议&#xff1a;为什么你不试试这样做呢&#x…

代码随想录算法训练营第二十九天|491. 非递减子序列,46.全排列

491. 非递减子序列 题目 给你一个整数数组 nums &#xff0c;找出并返回所有该数组中不同的递增子序列&#xff0c;递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。 数组中可能含有重复元素&#xff0c;如出现两个整数相等&#xff0c;也可以视作递增序列的一种…

Kubernetes中PV和PVC的几种状态类型

文章目录 1、PV和PVC概念1.1、PV1.2、PVC 2、PV / PVC的关系3、PV / PVC的状态类型3.1. Available&#xff08;可用&#xff09;3.2. Bound&#xff08;已绑定&#xff09;3.3. Released&#xff08;已释放&#xff09;3.4. Pending&#xff08;待定&#xff09;3.5. Failed&am…

关于UDP协议

UDP协议是基于非连接的发送数据就是把数据包简单封装一下&#xff0c;然后从网卡发出去就可以&#xff0c;数据包之间没有状态上的联系&#xff0c;UDP处理方式简单&#xff0c;所以性能损耗非常少&#xff0c;对于CPU、内存资源的占用远小于TCP&#xff0c;但是对于网络传输过…

设计编程网站集:生活部分:饮食+农业,植物(暂记)

这里写目录标题 植物相关综合教程**大型植物&#xff1a;****高大乔木&#xff08;Trees&#xff09;&#xff1a;** 具有坚硬的木质茎&#xff0c;通常高度超过6米。例如&#xff0c;橡树、松树、榉树等。松树梧桐 **灌木&#xff08;Shrubs&#xff09;&#xff1a;** 比乔木…

旧版本navicat更换颜色/护眼背景(利用regedit注册表编辑器 )

navicat默认的背景颜色是白色的&#xff0c;新版本可以如图直接在工具选项里面设置&#xff0c;可以先检查一下&#xff0c;如果没有相关设置&#xff0c;如果没有再往后看解决方法 另外&#xff0c;还可以安装其他护眼软件&#xff0c;但 若是设置里没有这个选项&#xff0c;…

webgl canvas系列——快速加背景、抠图、加水印并下载图片

文章目录 ⭐前言⭐canvas绘制图片&#x1f496;绘制csdn图片&#x1f496;给png图片加背景&#x1f496;cavans下载图片&#x1f496;cavans上传图片并抠图&#x1f496;cavans添加文字水印&#x1f496;inscode 完整代码块 ⭐结束 ⭐前言 大家好&#xff0c;我是yma16&#x…

mysql性能调优

mysql性能调优 sysbench压测调优到百万级别qps sysbench压测调优到百万级别qps 这篇文章https://www.percona.com/blog/millions-queries-per-second-postgresql-and-mysql-peaceful-battle-at-modern-demanding-workloads/#:~:textWe%20contacted%20SysBench%20author%20Alex…

抖音,剪映,TikTok,竖屏短视频转场pr模板视频素材

120个叠加效果视频转场过渡素材&#xff0c;抖音,剪映,TikTok,短视频转场pr模板项目工程文件。 效果&#xff1a;VHS、光效、胶片、霓虹灯闪光、X射线、信号、老电影等。 适用软件&#xff1a;Adobe Premiere Pro 2018 12.0或更高版本。 视频素材与大多数应用程序兼容&#xff…

ES高可用

分布式搜索引擎ES 分布式搜索引擎ES1.数据聚合1.1.聚合的种类1.2.DSL实现聚合1.3.RestAPI实现聚合 2.自动补全2.1.拼音分词器2.2.自定义分词器2.3.自动补全查询2.4.实现酒店搜索框自动补全 3.数据同步思路分析 4.集群4.1 ES集群相关概念4.2.集群脑裂问题4.3.集群分布式存储4.4.…

Diff算法详解

简要了解 Diff 算法目的就是找出新旧虚拟dom差异&#xff0c;最小化更新视图&#xff1b;即本质就是比较两个JS对象的差异&#xff1b;并不是页面上所有的更新都需要Diff算法。 在了解Diff算法之前&#xff0c;我们首先需要了解一下什么是虚拟DOM。 虚拟DOM 虚拟DOM是表示真实…

iSAM2 部分状态更新算法 (I - 原理解读)

Title: iSAM2 部分状态更新算法 (I-原理解读) 文章目录 I. 前言II. 部分状态的更新 (Partial State Update)III. 因子图的线性化 (Linearization of Factor Grahps)1. 简单实例的设定2. 一个线性化计算3. 其他线性化计算4. 状态更新量说明 IV. 部分 QR 分解实现变量消元 (Elimi…