mqtt的java代码实现_mqtt使用二(集成到java代码中)

import org.eclipse.paho.client.mqttv3.*;importorg.eclipse.paho.client.mqttv3.persist.MemoryPersistence;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Component;/*** Description:

* mqtt客户端

*@authorVictor*/@Componentpublic classMqttPushClient {

@AutowiredprivatePushCallback pushCallback;private static final Logger LOGGER = LoggerFactory.getLogger(MqttPushClient.class);private staticMqttClient client;public staticMqttClient getClient() {returnclient;

}public static voidsetClient(MqttClient client) {

MqttPushClient.client=client;

}/*** 连接

*@paramhost .

*@paramclientID .

*@paramusername .

*@parampassword .*/

public voidconnect(String host, String clientID, String username, String password) {

MqttClient client;try{

client= new MqttClient(host, clientID, newMemoryPersistence());

MqttConnectOptions options= newMqttConnectOptions();

options.setCleanSession(false);

options.setUserName(username);

options.setPassword(password.toCharArray());

options.setConnectionTimeout(30);

options.setKeepAliveInterval(20);

MqttPushClient.setClient(client);try{

client.setCallback(pushCallback);

client.connect(options);

}catch(Exception e) {

e.printStackTrace();

}

}catch(Exception e) {

e.printStackTrace();

}

}/*** 发布,默认qos为0,非持久化

*

*@paramtopic .

*@parampushMessage .*/

public voidpublish(String topic, String pushMessage) {

publish(0, false, topic, pushMessage);

}/*** 发布主题和消息队列

*

*@paramqos .

*@paramretained .

*@paramtopic .

*@parampushMessage .*/

public void publish(int qos, booleanretained, String topic, String pushMessage) {

MqttMessage message= newMqttMessage();

message.setQos(qos);

message.setRetained(retained);

message.setPayload(pushMessage.getBytes());

MqttTopic mTopic=MqttPushClient.getClient().getTopic(topic);if (null ==mTopic) {

LOGGER.error("topic not exist");

}

MqttDeliveryToken token;try{

token=mTopic.publish(message);

token.waitForCompletion();

}catch(MqttPersistenceException e) {

e.printStackTrace();

}catch(MqttException e) {

e.printStackTrace();

}

}/*** 订阅某个主题,qos默认为0

*

*@paramtopic .*/

public voidsubscribe(String topic) {

subscribe(topic,0);

}/*** 订阅某个主题

*

*@paramtopic .

*@paramqos .*/

public void subscribe(String topic, intqos) {try{

MqttPushClient.getClient().subscribe(topic, qos);

}catch(MqttException e) {

e.printStackTrace();

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值