JAVA 创建MQTT

引入依赖

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

创建MQTT


    @Value("${mqtt.server-url}")
    private String serverURI;
    @Value("${mqtt.client-id:}")
    private String clientId;
    @Value("${mqtt.enabled:true}")
    private Boolean enabled;
    @Value("${mqtt.user-name:server}")
    private String userName;
    @Value("${mqtt.password}")
    private String password;


    private MqttAsyncClient mqttAsyncClient;


    @Bean
    public MqttAsyncClient initMqttClient() {
        MemoryPersistence persistence = new MemoryPersistence();
        try {
            //当未设置标识时随机一个
            if (StringUtils.isEmpty(clientId)) {
                clientId = UUID.randomUUID().toString().replace("-", "");
            }
            mqttAsyncClient = new MqttAsyncClient(serverURI, clientId, persistence);
            // MQTT 连接选项
            MqttConnectOptions connOpts = new MqttConnectOptions();
            //设置MQTT连接账号密码
            connOpts.setUserName(userName);
            connOpts.setPassword(password.toCharArray());
            // 保留会话
            connOpts.setCleanSession(true);
            // 设置心跳秒数
            connOpts.setKeepAliveInterval(60);

            // 设置回调
            mqttAsyncClient.setCallback(new MqttReconnectCallback());
            mqttAsyncClient.connect(connOpts);
            log.info("初始化应用");
            return mqttAsyncClient;
        } catch (MqttException e) {
            log.error("初始化应用",e.getMessage());
        }
        return null;
    }

  

    class MqttReconnectCallback implements MqttCallbackExtended {

        @Override
        public void connectComplete(boolean b, String s) {
            String topic = String.format("$sys/get/data/%s", clientId);
            try {
                mqttAsyncClient.subscribe(topic,1);
                log.info("订阅主题成功");
            } catch (MqttException e) {
                log.error("订阅主题失败",e.getMessage());
            }
        }

        @Override
        public void connectionLost(Throwable throwable) {
            try {
                mqttAsyncClient.reconnect();
                log.info("MQTT断开连接,重连成功");
            } catch (MqttException e) {
                log.error("MQTT断开连接",e.getMessage());
            }
        }

        @Override
        public void messageArrived(String s, MqttMessage mqttMessage) throws Exception {
            try {
                
            } catch (Exception e) {
                log.error("MQTT接收信息",e.getMessage());
            }
        }

        @Override
        public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {

        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值