emqx消息订阅代码示例

EMQX 是一款大规模可弹性伸缩的云原生分布式物联网 MQTT 消息服务器。作为全球最具扩展性的 MQTT 消息服务器,EMQX 提供了高效可靠海量物联网设备连接,能够高性能实时移动与处理消息和事件流数据,帮助您快速构建关键业务的物联网平台与应用。

通过包管理工具 Maven 可以方便地安装 Paho Java 客户端库

将类库引入到项目中

<dependency>

  <groupId>org.eclipse.paho</groupId>

<artifactId>org.eclipse.paho.client.mqttv3</artifactId>

<version>1.2.2</version>

</dependency>

 

 

 

示例代码:

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

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

 

public class EmqxApp {

 

    public static void main(String[] args) {

        String subTopic = "qulink/prod/appid";//appid设置为真实参数

        String broker = "tcp://118.31.175.25:1883";

        String clientId = "appid";//appid设置为真实参数

 

        String username = "appid";//appid设置为真实参数

        String password = "appsecret";//appsecret设置为真实参数

 

        MemoryPersistence persistence = new MemoryPersistence();

 

        try {

            MqttClient client = new MqttClient(broker, clientId, persistence);

 

            // MQTT 连接选项

            MqttConnectOptions connOpts = new MqttConnectOptions();

            connOpts.setUserName(username);

            connOpts.setPassword(password.toCharArray());

            // 保留会话

            connOpts.setCleanSession(true);

 

            // 设置回调

            client.setCallback(new EmqxOnMessageCallback());

 

            // 建立连接

            System.out.println("Connecting to broker: " + broker);

            client.connect(connOpts);

 

            System.out.println("Connected");

            // 订阅

            client.subscribe(subTopic);

 

        } catch (MqttException me) {

            System.out.println("reason " + me.getReasonCode());

            System.out.println("msg " + me.getMessage());

            System.out.println("loc " + me.getLocalizedMessage());

            System.out.println("cause " + me.getCause());

            System.out.println("excep " + me);

            me.printStackTrace();

        }

    }

 

}

 

 

 

 

 

import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;

import org.eclipse.paho.client.mqttv3.MqttCallback;

import org.eclipse.paho.client.mqttv3.MqttMessage;

 

public class EmqxOnMessageCallback implements MqttCallback {

 

    public void connectionLost(Throwable cause) {

        // 连接丢失后,一般在这里面进行重连

        System.out.println("连接断开,可以做重连");

    }

 

    public void messageArrived(String topic, MqttMessage message) throws Exception {

        // subscribe后得到的消息会执行到这里面

        System.out.println("接收消息主题:" + topic);

        System.out.println("接收消息Qos:" + message.getQos());

        System.out.println("接收消息内容:" + new String(message.getPayload()));

    }

public void deliveryComplete(IMqttDeliveryToken token) {

        System.out.println("deliveryComplete---------" + token.isComplete());

    }

}

_________________________________________________________________________________________________

 畅联云(www.24hlink.cn)专注于物联网设备的接入、管理、控制、数据采集、事件监测等技术,由杭州美畅物联技术有限公司精心打造,在物联网实战领域能给合作伙伴带来难以置信的的降本增效价值。

posted @ 2022-11-18 13:56  美畅物联--张晓峰  阅读(231)  评论(0编辑  收藏  举报