MQTT服务器端配置
来源:互联网 发布:交换机网络配置 编辑:程序博客网 时间:2024/06/08 08:31
之前做项目的时候写了一个服务器,一开始架构没想好,在需使用长连接的地方,使用了轮询的方法,导致服务器负载很重。老板推荐使用MQTT协议作为长连接的协议,于是我就在已有的win系统下面spring框架基础上增加MQTT协议部分。花了一晚上,总结一下步骤:
步骤如下:
(1)下载apache-apollo-1.7.1-windows-distro.zip,下载后解压,打开cmd,cd到apache-apollo-1.7.1-windows-distro.目录下,然后,输入apollo create test(名字任意取,这里是根据官网介绍的来取的)创建服务器实例,服务器实例包含了所有的配置,运行时数据等,并且和一个服务器进程关联。
(2)create mybroker之后会在bin目录下生成mybroker文件夹,里面包含有很多信息,其中etc\apollo.xml文件下是配置服务器信息的文件,etc\users.properties文件包含连接MQTT服务器时用到的用户名和密码,后面会介绍,可以修改原始的admin=password,可以接着换行添加新的用户名密码。
(3)打开cmd,cd到apache-apollo-1.7.1-windows-distro.目录下 运行apollo-broker run 开启服务器,可以在浏览器中输入http://127.0.0.1:61680/查看是否安装成功,该界面展示了topic,连接数等很多信息。
(4)下载jar包,http://ftp.jaist.ac.jp/pub/eclipse/paho/releases/1.1.0/Java/plugins/org.eclipse.paho.client.mqttv3_1.1.0.jar,放到spring项目的lib下面
(5)服务器发布消息代码如下:
Server.java
package cn.smartslim.mqtt.demo.paho; import org.eclipse.paho.client.mqttv3.MqttClient; import org.eclipse.paho.client.mqttv3.MqttConnectOptions; import org.eclipse.paho.client.mqttv3.MqttDeliveryToken; import org.eclipse.paho.client.mqttv3.MqttException; import org.eclipse.paho.client.mqttv3.MqttMessage; import org.eclipse.paho.client.mqttv3.MqttPersistenceException; import org.eclipse.paho.client.mqttv3.MqttTopic; import org.eclipse.paho.client.mqttv3.internal.MemoryPersistence; public class Server { public static final String HOST = "tcp://127.0.0.1:1883"; public static final String TOPIC = "tokudu/yzq124"; private static final String clientid ="server"; private MqttClient client; private MqttTopic topic; private String userName = "test"; private String passWord = "test"; private MqttMessage message; public Server() throws MqttException { //MemoryPersistence设置clientid的保存形式,默认为以内存保存 client = new MqttClient(HOST, clientid, new MemoryPersistence()); connect(); } private void connect() { MqttConnectOptions options = new MqttConnectOptions(); options.setCleanSession(false); options.setUserName(userName); options.setPassword(passWord.toCharArray()); // 设置超时时间 options.setConnectionTimeout(10); // 设置会话心跳时间 options.setKeepAliveInterval(20); try { client.connect(options); topic = client.getTopic(TOPIC); } catch (Exception e) { e.printStackTrace(); } } public void publish(MqttMessage message) throws MqttPersistenceException, MqttException{ MqttDeliveryToken token = topic.publish(message); token.waitForCompletion(); System.out.println(token.isComplete()+"========"); } public static void main(String[] args) throws MqttException { Server server = new Server(); server.message = new MqttMessage(); server.message.setQos(1); server.message.setRetained(true); server.message.setPayload("eeeeeaaaaaawwwwww---".getBytes()); server.publish(server.message); System.out.println(server.message.isRetained()+"------ratained状态"); } }
(6)由于是真的服务器,就在防火墙把1883这个端口打开(7)我只是想知道服务器能不能直接集成这个协议,客户端就先下载了一个成品exe,可以直接接收订阅的消息。COMNET.exe
搞定,接下来就要准备为各个客户端写订阅消息这端了,有QT,VS2010 C++,c#,后面慢慢搞
- MQTT服务器端配置
- mqtt配置常见错误
- MQTT配置安全策略
- MQTT客户端QT的配置
- MQTT--mosquitto用户名密码配置
- MQTT+ActiveMQ实现消息推送(服务器端java实现)
- mqtt
- mqtt
- MQTT
- mqtt
- MQTT
- MQTT
- MQTT
- MQTT
- MQTT
- mqtt
- MQTT
- MQTT
- qt小项目
- 基于MFC的网卡信息查询
- C# Turning
- 【数据结构与算法】treemap应用 排序
- 3389、1433、3306抓鸡原理和工具教程
- MQTT服务器端配置
- Java 拾遗补阙 ----- 继承私有属性
- POJ1084 DLX 摧毁火柴棒
- MFC基于对话框程序启动时隐藏窗口的实现
- tf + android +demo
- 洛谷 1865 A % B Promble 欧拉筛
- 2.7Java多态
- bzoj1984 月下“毛景树”
- 一起Talk Android吧(第四十二回:Android中的Fragment七-动态加载)