【原创】MQTT服务端搭建-最快方式验证自己开发的客户端

文章首发于同名微信公众号:DigCore

欢迎关注同名微信公众号:DigCore,及时获取最新技术博文。

 

在上一篇文章《【原创】MQTT客户端搭建-最清晰的MQTT协议架构》中提到了MQTT.fx工具作为客户端使用时,使用了该工具官方提供的服务器m2m.eclipse.org: 1883,现在准备在本地主机搭建一个MQTT服务器。

 

在GitHub网站上MQTT项目里,也有很多关于服务器的介绍,各类服务器平台列表:

https://github.com/mqtt/mqtt.github.io/wiki/brokers

 


 

关于MQTT服务器的搭建已经有很多人参与进来了,不过各个服务器未必安装的都如此顺利,总结近期网上搜寻到的资料:

 

MQTTRoute,本站验证结果:有30天试用期。

 

MQTTnet,用户在博客发表验证结果:MQTTnet在VS2015打不开且客户端示例不可用,属于C++源项目。

该用户博客地址:

https://www.cnblogs.com/zeroes/p/mqttnet.html

 

Mosquitto,本站验证结果:不可下载win7-64安装包。

用户在博客发表验证结果:Win10 64位系统,安装报错或缺少dll文件,不能使用

该用户博客地址:

https://blog.csdn.net/yannanxiu/article/details/52703946

 

对比以上这些别人的经验后,最后选择安装Apache Apollo。

 


 

软件下载

服务器下载地址:

http://activemq.apache.org/apollo/download.html

 


 

软件安装与配置

下载了软件包后解压到要放置的目录(注:不允许有中文),启动CMD命令行工具。

CMD命令行工具下切换到目录

.. \apache-apollo-1.7.1-windows-distro\apache-apollo-1.7.1\bin

下,执行apollocreate digcore指令,如下图:

 

出现报错信息:

Warning: JAVA_HOME environmentvariable is not set.

Error: missing `server' JVM at`C:\Program Files (x86)\Java\jre1.8.0_161\bin

ver\jvm.dll'.

Please install or use the JRE or JDK that contains these missingcomponents.

 

这说明电脑还未配置相关的环境,需要安装JDK,下载地址:

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

 

1.下载并安装后,配置JDK到系统环境变量

 

2.新建系统变量JAVA_HOME,设置变量值C:\Program Files\Java\jdk1.8.0_181

 

3.新建PATH(加入列表已存在直接编辑),新增变量值

%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin,注意新增变量值时候不要删除原本的信息,用分号;隔开

 

4.新建CLASSPATH,设置变量值

.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

 

5.在CMD命令行输入java –version验证java环境的正确配置。

 

JDK环境参数配置完成。

 


 

 

创建服务器并验证

创建一个MQTT代理服务器,命令行切换到bin目录下后执行apollocreate digcore

 

成功创建一个MQTT代理服务器后

 

 

切换目录到新创建的MQTT代理服务器文件夹下的bin目录:..\apache-apollo-1.7.1\bin\digcore\bin

执行指令apollo-broker.cmd run 启动服务器

 

命令行出现了代理服务器的启动信息,打开浏览器,输入命令行中显示的IP(一般自己电脑本机)和端口号,即可访问

默认配置:用户名admin,密码password

 

使用MQTT.fx客户端尝试连接服务器

 

在MQTT.fx中填写服务器信息,这里需要注意服务器接受的连接端口号,此案例中TCP连接时支持的是61613端口。

 

MQTT.fx客户端连接成功后,服务器控制台的Connectors选项卡内有新的连接设备接入信息:

 

再开启一个MQTT.fx客户端,设置第二个MQTT.fx客户端时,需要留意把ClientID设置成不同于上一个客户端即可。

 

一起连入服务器后的效果:

 


 

以上完成了MQTT服务器在本地主机的搭建过程。

 

作为应用开发者来说,侧重点如果是在客户端的设计开发,则对服务器的选择就要考虑便捷性和可靠性。

 

 

更多技术干货分享,敬请关注微信公众号:DigCore

或者扫码关注公众号

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java开发MQTT客户端服务端需要使用MQTT协议的Java库,例如Eclipse Paho或者Mosquitto等。以下是一个基本的MQTT客户端服务端的代码示例: MQTT客户端: ```java import org.eclipse.paho.client.mqttv3.*; public class MqttClientExample { public static void main(String[] args) { String brokerUrl = "tcp://localhost:1883"; String clientId = "mqtt-client"; String topic = "test/topic"; int qos = 2; try { MqttClient mqttClient = new MqttClient(brokerUrl, clientId); mqttClient.connect(); MqttMessage message = new MqttMessage(); message.setPayload("Hello, MQTT!".getBytes()); message.setQos(qos); mqttClient.publish(topic, message); mqttClient.disconnect(); } catch (MqttException e) { e.printStackTrace(); } } } ``` MQTT服务端: ```java import org.eclipse.paho.server.mqttv3.*; public class MqttServerExample { public static void main(String[] args) { int port = 1883; MemoryPersistence persistence = new MemoryPersistence(); try { MqttServer mqttServer = new MqttServer(port, persistence); mqttServer.start(); mqttServer.subscribe("test/topic", (topic, message) -> { System.out.println("Received message: " + new String(message.getPayload())); }); Thread.sleep(5000); mqttServer.stop(); } catch (MqttException | InterruptedException e) { e.printStackTrace(); } } } ``` 这个示例使用了Eclipse Paho库来实现MQTT客户端服务端MQTT客户端连接到MQTT服务端并发布一条消息,MQTT服务端订阅了该主题并打印出接收到的消息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值