EMQTT安装与使用

EMQTT安装与使用一 简述 MQTT Message Queuing Telemetry Transport 消息队列遥测传输协议 是一种基于发布 订阅 publish subscribe 模式的 轻量级 通讯协议 该协议构建于 TCP IP 协议上 由 IBM 在 1999 年发布

大家好,我是讯享网,很高兴认识大家。

一、简述

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。

MQTT是一个基于客户端-服务器的消息发布/订阅传输协议(TCP)。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。

二、官网下载

官网地址:https://www.emqx.cn/

下载流程:MQTT-->MQTT-->MQTT官网-->Software(软件)-->Servers/Brokers(服务/代理)-->[EMQ图标] EMQX-->Download Now(现在下载)-->中间顶部选for Cloud-->EMQ X Broker-->Windows(这里看你系统需要下载,我下的是Windows)--> 然后点击 emqx-windows-4.2.8.zip -->解压到你想放的盘符

三、启动服务

启动:dos 命令到你解压的盘符,比如我是放在F盘下面,F:--> cd emqx-->cd bin-->emqx start

停止:emqx stop

查看服务是否启动(我知道的方式有两种):

1、使用dos命令查看:F:--> cd emqx-->cd bin-->emqx status ,如出现以下提示则启动成功

2、浏览器地址栏中直接输入:http://localhost:18083/             用户名:admin   密码:public

登录成功页面:


讯享网

如何英文不好的小伙伴可在这设置中文:

四、Java  代码测试

添加依赖:

<dependency> <groupId>org.eclipse.paho</groupId> <artifactId>org.eclipse.paho.client.mqttv3</artifactId> <version>1.2.2</version> </dependency>

讯享网

Server

讯享网package com.mymqtt.myemqtt; import java.util.Scanner; import org.eclipse.paho.client.mqttv3.MqttClient; import org.eclipse.paho.client.mqttv3.MqttConnectOptions; import org.eclipse.paho.client.mqttv3.MqttMessage; public class Server { public static void main(String[] args) throws Exception { String host = "tcp://127.0.0.1:1883"; String topic = "hello"; String clientId = "server";// clientId不能重复 MqttConnectOptions options = new MqttConnectOptions(); options.setCleanSession(true); MqttClient client = new MqttClient(host, clientId); client.connect(options); MqttMessage message = new MqttMessage(); @SuppressWarnings("resource") Scanner scanner = new Scanner(System.in); System.out.println("请输入要发送的内容:"); while (true) { String line = scanner.nextLine(); message.setPayload(line.getBytes()); client.publish(topic, message); } } } 

Client

package com.mymqtt.myemqtt; import org.eclipse.paho.client.mqttv3.MqttClient; import org.eclipse.paho.client.mqttv3.MqttConnectOptions; public class Client { public static void main(String[] args) throws Exception { String host = "tcp://127.0.0.1:1883"; String topic = "hello"; String clientId = "12345";// clientId不能重复 // 1.设置mqtt连接属性 MqttConnectOptions options = new MqttConnectOptions(); options.setCleanSession(true); // 2.实例化mqtt客户端 MqttClient client = new MqttClient(host, clientId); // 3.连接 client.connect(options); client.setCallback(new PushCallback()); while (true) { client.subscribe(topic, 2); } // client.disconnect(); } } 

PushCallback

讯享网package com.mymqtt.myemqtt; import java.util.Date; import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken; import org.eclipse.paho.client.mqttv3.MqttCallback; import org.eclipse.paho.client.mqttv3.MqttMessage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class PushCallback implements MqttCallback { private final Logger logger = LoggerFactory.getLogger(this.getClass()); public void connectionLost(Throwable cause) { // 连接丢失后,一般在这里面进行重连 System.out.println("连接断开,可以做重连"); logger.info("掉线时间:{}", new Date()); } public void deliveryComplete(IMqttDeliveryToken token) { System.out.println("deliveryComplete---------" + token.isComplete()); } public void messageArrived(String topic, MqttMessage message) throws Exception { // subscribe后得到的消息会执行到这里面 // System.out.println(message); System.out.println("接收消息主题 : " + topic); System.out.println("接收消息Qos : " + message.getQos()); System.out.println("接收消息内容 : " + new String(message.getPayload())); } } 

1、先启动Client类中main方法。

2、再启动server类中main 方法,发布主题内容,就可在client控制台中看见

=================================================================

=================================================================

同时我们也可在服务器的可视化界面查看客户端连接状态

先写到这里。认证mysql后,如何使用_EMQ-MySQL认证和MySQL访问控制权限进一步学习中,到时候再补充。

如果对你有帮助,回复一下:+1 。

 

小讯
上一篇 2025-02-07 21:39
下一篇 2025-04-08 22:11

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/41942.html