java中使用mqtt协议

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

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

通过java使用mqtt

1、 首先要先下载 org.eclipse.paho.client.mqttv3-1.1.1.jar 相关的jar包,或者是在maven工程中添加依赖

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

2、 发送信息

String HOST = "tcp://ip:1883"  # 服务器地址
String userName = ""  # 用户名
String password = ""  # 密码
String clientId = ""  # 
int qos = 1|2|0	# 消息的级别
String topic = ""  # 发布的主题
String count = ""  # 发布的内容  

发布端:

 MemoryPersistence persistence = new MemoryPersistence();内存存储
   // 创建客户端
    MqttClient  client = new MqttClient(String url, String clientId, MemoryPersistence);
    //创建连接参数
    MqttConnectOptions connOpts = nwe MqttConnectOptions();
    // 在重新启动和重新连接时记住状态
     connOpts.setCleanSession(false);
     // 设置连接的用户名
     connOptis.setUserName(userName);
     connOptis.setPassword(password.toCharArray());  # 参数是字符数组类型
     // 创建连接
     client.connect(connOpts);  # 如果不传参数,则按照默认的
     // 创建消息
      MqttMessage message = new MqttMessage(content.getBytes());   #  参数是字节数组类型
    //  设置消息的服务质量
      message.setQos(qos);
    //  发布消息
     client.publish(topic, message);
    //  断开连接
      client.disconnect();
    // 关闭客户端
      client.close();

接收端

MemoryPersistence memoryPersistence = new MemoryPersistence();
        try {
            MqttClient client = new MqttClient("","",memoryPersistence);
            MqttConnectOptions connOpts = new MqttConnectOptions();
            connOpts.setCleanSession(false);
            connOpts.setUserName("");
            connOpts.setPassword("".toCharArray());
            client.connect(connOpts);
            // 设置回调函数,当订阅到信息时调用此方法
            client.setCallback(new MqttCallback() {
                @Override
                public void connectionLost(Throwable throwable) {
                    // 连接失败时调用
                }

                @Override
                public void messageArrived(String s, MqttMessage mqttMessage) throws Exception {
                    // 订阅成功,并接受信息时调用
                    mqttMessage.getPayload(); // 获取消息内容
                }

                @Override
                public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {

                }
            });
            
            client.subscribe("xxx");
            
            client.disconnect();
            client.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
  • 6
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
协议时,如何订阅和发布消息? 在 Java 使用 MQTT 协议订阅和发布消息,需要使用 MQTT 客户端库。可以使用 Eclipse Paho 客户端库,该库提供了 Java 版本的 MQTT 客户端实现。 首先,需要创建一个 MQTT 客户端,使用客户端的 connect() 方法连接到 MQTT 代理服务器。然后,使用 subscribe() 方法订阅一个或多个主题。在订阅主题之后,就可以使用 publish() 方法发布消息到指定的主题。 以下是一个简单的 Java MQTT 客户端示例代码,用于订阅主题和发布消息: ``` import org.eclipse.paho.client.mqttv3.*; import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; public class MqttClientExample { public static void main(String[] args) { String broker = "tcp://mqtt.server.com:1883"; String clientId = "JavaMqttClient"; MemoryPersistence persistence = new MemoryPersistence(); try { MqttClient client = new MqttClient(broker, clientId, persistence); client.connect(); System.out.println("Connected to broker."); String topic = "my/topic"; int qos = 1; client.subscribe(topic, qos); System.out.println("Subscribed to topic:" + topic); String content = "Hello, MQTT!"; MqttMessage message = new MqttMessage(content.getBytes()); message.setQos(qos); client.publish(topic, message); System.out.println("Message published."); client.disconnect(); } catch (MqttException e) { e.printStackTrace(); } } } ``` 在这个示例,我们连接到了一个名为 "mqtt.server.com" 的 MQTT 代理服务器,创建了一个名为 "JavaMqttClient" 的客户端,并订阅了一个名为 "my/topic" 的主题。然后,我们发布了一条消息到同一个主题,消息内容为 "Hello, MQTT!"。最后,我们断开了与服务器的连接。 注意,在实际使用 MQTT 进行开发时,需要按照实际情况设置 MQTT 客户端的参数、处理异步操作和错误等情况。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值