最进公司要把mqtt给独立出来,专门给他一个服务器进行部署,然后我就在测试非127.0.0.1连接时抛出异常
异常如下:
MqttException (128)
at org.eclipse.paho.client.mqttv3.MqttClient.subscribe(MqttClient.java:347)
at com.dmxj.qianghe.common.push.MqttSub.sub(MqttSub.java:48)
at com.dmxj.qianghe.common.push.MqttSub.runsub(MqttSub.java:55)
at com.dmxj.qianghe.common.socket.SocketClientInit.init(SocketClientInit.java:61)
at javax.servlet.GenericServlet.init(GenericServlet.java:158)
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1132)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1079)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:973)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4885)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5199)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:743
这个网上找了下是订阅异常了,然后看了下我的订阅,果然订阅主题为
$SYS/brokers/[email protected]/clients/#
自然订阅不上,直接修改成对于ip也不行,看来是acl.config文件定义了可订阅$SYS主题的权限。
{allow, {user, "dashboard"}, subscribe, ["$SYS/#"]}. {allow, {ipaddr, "127.0.0.1"}, pubsub, ["$SYS/#", "#"]}. %%%{deny, all, subscribe, ["$SYS/#", {eq, "#"}]}. {allow, all}.
acl.config文件第三行默认是禁止客户端订阅$SYS/#主题。我们把它注释掉。开启一个客户端,订阅$SYS/#主题,消息如下:
module(emqttd_broker)这个模块,它会每秒钟publish消息,主题关键字有uptime和datetime等。
module(emqttd_stats)这个模块,它会每60秒钟publish消息,把Ets表mqtt_stats的信息发出来。
module(emqttd_metrics)这个模块,它的原理同上。
eg:
$SYS/brokers/[email protected]/uptime: qos=0
$SYS/brokers/[email protected]/sysdescr: qos=0
打开文件vm.args,把节点名称修改为:
#-name [email protected] -name [email protected]
eg:
$SYS/brokers/[email protected]/uptime: qos=0
$SYS/brokers/[email protected]/sysdescr: qos=0
订阅客户端上下线的主题
具体某个节点的某个clientId方式的主题是:
$SYS/brokers/(node)/clients/(clientId)/connected $SYS/brokers/[email protected]/clients/861694030142478/connected $SYS/brokers/[email protected]/clients/861694030142478/disconnected
通配方式的主题是:
$SYS/brokers/+/clients/+/connected $SYS/brokers/+/clients/+/disconnected $SYS/brokers/+/clients/#
出于安全起见,我们把acl.config文件修改为:
允许客户端订阅"$SYS/brokers/+/clients/#"主题,但是禁止订阅"$SYS/#"主题。
{allow, {user, "dashboard"}, subscribe, ["$SYS/#"]}. {allow, {ipaddr, "127.0.0.1"}, pubsub, ["$SYS/#", "#"]}. {allow, all, subscribe, ["$SYS/brokers/+/clients/#"]}. {deny, all, subscribe, ["$SYS/#", {eq, "#"}]}. {allow, all}.
以上修改重试连接OK通过
文章浏览阅读1k次。(一)软件功能实现两个功能:根据主题生成歌词和辅助写歌词根据用户给定的主题生成一段歌词,歌词表达要流畅,语句通顺,押韵提供相关的词语和句子供用户选择,使用户在帮助下完成歌词创作核心模型主题生成首句模型-相似度计算 + 基于SIF加权的word2vec模型首句生成整段歌词模型-基本的Seq2Seq模型和双向Decoder + beam search的改进模型(二) 核心..._ai写rap歌词
文章浏览阅读334次。毕业设计 32单片机 万年历 温湿度采集 课程设计_stm32万年历按键切换
文章浏览阅读6.6k次。在做android项目时,我们经常需要从本地或者网络读取图片,并转换为Bitmap图片,以便使用,下面是读取本地图片并转换的方法:Java代码 /** * 得到本地或者网络上的bitmap url - 网络或者本地图片的绝对路径,比如: * * A.网络路径: url="http://blog.foreverlov_java 读取网页图像到bitmap
文章浏览阅读9.8k次,点赞7次,收藏118次。多功能ALU设计实验一、实验目的与要求实验目的:(1)学习多功能ALU的工作原理,掌握运算器的设计方法(2)掌握运用Verilog HDL 进行行为描述与建模的技巧和方法实验要求:本实验要求设计一个具有8种运算功能的32位ALU,并能够产生运算结果的标志:结果为零标志ZF(Zero Flag)、溢出标志OF(Overflow Flag)。ALU通过3根控制线ALU_OP[2:0]..._设计一个具有8种运算功能的32位alu实验总结
文章浏览阅读484次,点赞10次,收藏5次。列表加载图片通常使用UITableView或UICollectionView,由于列表中内容数量不确定并且对于图片质量要求也不确定,所以对于图片加载的优化是很有必要的。
文章浏览阅读7.3k次,点赞5次,收藏11次。Snipaste的使用_snipaste使用
文章浏览阅读273次,点赞3次,收藏8次。Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
文章浏览阅读351次。在Qt应用程序中,执行命令行命令并获取输出结果可以使用QProcess类。现在,我们可以在Qt应用程序中调用这个函数来执行命令行命令并获取输出结果。现在,我们可以在Qt应用程序中调用这个函数来执行命令行命令并获取输出结果。在上面的示例中,我们将命令设置为"dir",这将列出当前目录的内容。在上面的示例中,我们将命令设置为"dir",这将列出当前目录的内容。这样,当我们点击按钮时,程序将执行命令并将输出结果显示在文本编辑器中。这样,当我们点击按钮时,程序将执行命令并将输出结果显示在文本编辑器中。_qt.createqprocess()
文章浏览阅读216次。最近在看日志的一些东西,发现利用JDK自带的log也可以简单的实现日志的输出,将日志写入文件的过程记录如下:1、新建LogUtil.Java(里面写了几个静态方法,为log设置等级、添加log控制台handler、添加log文件输出handler)packagecn.darkranger.log.logger;importjava.io.IOException;importjava.text.S..._logutil.java
文章浏览阅读221次。scala安装时,此时不应有 \scala\bin…\lib\jline-2.14.5.jar那是因为安装Scala时,默认安装到Program Files (x86)或者Program Files下,但是这俩个文件夹命名存在空格,这是从新安装,选择没有空格存在的文件夹下面即可。谢谢..._c:\users\dell>scala 此时不应有 \scala\bin\..\lib\jline-2.14.5.jar
文章浏览阅读1.7k次。在本地创建一个用于存储Docker镜像的目录,比如 /data/docker-registry。如果需要加速拉取公共镜像,可以配置阿里云或DaoCloud等国内提供的Docker镜像加速器。如果需要在其他机器上访问该私有仓库,则需要配置证书。使用docker tag将本地构建好的镜像打标签,并推送到私有仓库中。在官网下载Docker安装包进行安装,具体操作方式可以参考官方文档。至此,本地Docker仓库搭建完成。配置客户端访问证书(可选)拉取Registry镜像。启动Registry容器。_本地安装docker