Java 中使用 MQTT

前言

由于工作原因要使用到mqtt,然后呢以前也是没有使用过mqtt,所以也是搞得挺久的。今天搞出来了,写一个日记记录一下。

本文参考:如何在 Java 中使用 MQTT | EMQ

一、mqtt是什么?

MQTT 是一种基于发布/订阅模式的 轻量级物联网消息传输协议 ,可在严重受限的硬件设备和低带宽、高延迟的网络上实现稳定传输。

二、使用的工具

1.先创建一个新的Maven项目,然后就在这个Maven项目中引入所需依赖。

在pom.xml中引入依赖。

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

    <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcpkix-jdk15on</artifactId>
        <version>1.70</version>
    </dependency>
</dependencies>

2、创建一个SubscribeSample类,代码如下:(我的理解这个相当于消费者吧,其实就是消息接收方)

import org.eclipse.paho.client.mqttv3.*;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;

public class SubscribeSample {
    public static void main(String[] args) {
        String broker = "tcp://broker.emqx.io:1883";
        String topic = "asdfsdfa";
        String clientid = "subscribe_client";
        int qos = 0;

        try {
            MqttClient client = new MqttClient(broker, clientid, new MemoryPersistence());
            // 连接参数
            MqttConnectOptions options = new MqttConnectOptions();
            options.setConnectionTimeout(60);
            options.setKeepAliveInterval(60);
            // 设置回调
            client.setCallback(new MqttCallback() {

                public void connectionLost(Throwable cause) {
                    System.out.println("connectionLost: " + cause.getMessage());
                }

                public void messageArrived(String topic, MqttMessage message) {
                    System.out.println("topic: " + topic);
                    System.out.println("Qos: " + message.getQos());
                    System.out.println("message content: " + new String(message.getPayload()));
                }

                public void deliveryComplete(IMqttDeliveryToken token) {
                    System.out.println("deliveryComplete---------" + token.isComplete());
                }

            });
            client.connect(options);
            client.subscribe(topic, qos);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

3、创建一个PublishSample类,代码如下:(我的理解这个相当于生产者吧,消息产生方)

import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;

public class PublishSample {

    public static void main(String[] args) {

        String broker = "tcp://broker.emqx.io:1883";
        String topic = "asdfsdfa";
        String clientid = "publish_clien";
        String content = "各位好!";
        int qos = 0;

        try {
            MqttClient client = new MqttClient(broker, clientid, new MemoryPersistence());
            // 连接参数
            MqttConnectOptions options = new MqttConnectOptions();
            options.setConnectionTimeout(60);
            options.setKeepAliveInterval(60);
            // 连接
            client.connect(options);
            // 创建消息并设置 QoS
            MqttMessage message = new MqttMessage(content.getBytes());
            message.setQos(qos);
            // 发布消息
            client.publish(topic, message);
            System.out.println("Message published");
            System.out.println("topic: " + topic);
            System.out.println("message content: " + content);
            // 关闭连接
            client.disconnect();
            // 关闭客户端
            client.close();
        } catch (MqttException e) {
            throw new RuntimeException(e);
        }
    }
}

结果:

 

  • 10
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!您可以使用 Eclipse Paho 提供的 Java MQTT 客户端库来调用 MQTT。 下面是使用 Eclipse Paho 进行 MQTT Java 调用的基本步骤: 1. 首先,确保您已经将 Eclipse Paho 的 Java 客户端库添加到您的项目。您可以在 Maven 或 Gradle 添加以下依赖项: Maven: ```xml <dependency> <groupId>org.eclipse.paho</groupId> <artifactId>org.eclipse.paho.client.mqttv3</artifactId> <version>1.2.5</version> </dependency> ``` Gradle: ```groovy implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.5' ``` 2. 创建一个 MQTT 客户端对象: ```java String broker = "tcp://mqtt.example.com:1883"; String clientId = "your-client-id"; MqttClient client = new MqttClient(broker, clientId); ``` 3. 设置连接选项并连接到 MQTT 代理服务器: ```java MqttConnectOptions options = new MqttConnectOptions(); options.setCleanSession(true); client.connect(options); ``` 4. 订阅主题: ```java String topic = "your-topic"; client.subscribe(topic); ``` 5. 发布消息: ```java String message = "Hello, MQTT!"; client.publish(topic, message.getBytes(), 0, false); ``` 6. 处理接收到的消息: ```java client.setCallback(new MqttCallback() { @Override public void connectionLost(Throwable cause) { // 处理连接丢失事件 } @Override public void messageArrived(String topic, MqttMessage message) throws Exception { // 处理接收到的消息 String content = new String(message.getPayload()); System.out.println("Received message: " + content); } @Override public void deliveryComplete(IMqttDeliveryToken token) { // 处理消息传递完成事件 } }); ``` 7. 断开连接: ```java client.disconnect(); ``` 这只是一个简单的示例,您可以根据您的需求进行更多的 MQTT 操作和配置。请确保根据您的实际情况进行适当的错误处理和异常处理。 希望这可以帮助您开始使用 MQTT Java 客户端库调用 MQTT!如果您有任何进一步的问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值