java mqtt 服务器_物联网项目 ActiveMQ windows服务器私有化部署 踩坑记

物联网项目 ActiveMQ windows服务器私有化部署 踩坑记

最近为一个政府客户做基于MQTT的物联网项目的私有化部署。对方服务器用的是windows server 2012。

我们的应用架构是Spring + Tomcat + MySQL + MQTT + Redis。MQTT使用的是Apache ActiveMQ (https://activemq.apache.org/getting-started#OnWindows:),部署方式参见https://zhuanlan.zhihu.com/p/264862949:

应用部署完成,硬件设备全都上线后,发现了一个头疼的问题:大概2-3分钟左右,网络应用对ActiveMQ的订阅即终止(这一点通过查看http://localhost:8161/admin中“Subscribers”可以确定)。

我们的应用在阿里云平台上已经平稳运行了近1年,还是头一次发现这样的问题。经过研究,发现apache-activemq-5.15.10dataactivemq.log日志中有一条:

Transport Connection to: tcp://127.0.0.1:54187 failed: java.io.EOFException | org.apache.activemq.broker.TransportConnection.Transport | ActiveMQ Transport: tcp:///127.0.0.1:54187@1883

然后查看tomcat中的日志,发现对应时间有一条日志记录,是说应用(作为client)与activeMq有超过60秒的时间没有数据收发,超过了keepAliveInterval的设置值(默认为60秒),因此应用停止了对activeMq的订阅。

找到原因后,我们在spring-mqtt设置中,disable了keepAliveInterval的处理(如下),然后一切正常了。

f28f3dd069ba3a705e48050cdefc0988.png

网络上关于MQTT的经验分享屈指可数,把我们踩过的坑分享出来,希望帮到有需要的朋友。

如果哪位有更好的解决方案,欢迎指教!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值