java mqtt 订阅主题_MQTT介绍(3)java模拟MQTT的发布,订阅

1 package com.huhy.web.common.mqtt;2

3 import org.eclipse.paho.client.mqttv3.MqttClient;4 import org.eclipse.paho.client.mqttv3.MqttConnectOptions;5 import org.eclipse.paho.client.mqttv3.MqttDeliveryToken;6 import org.eclipse.paho.client.mqttv3.MqttException;7 import org.eclipse.paho.client.mqttv3.MqttMessage;8 import org.eclipse.paho.client.mqttv3.MqttPersistenceException;9 import org.eclipse.paho.client.mqttv3.MqttTopic;10 import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;11 /**12 * @Author:huhy13 * @DATE:Created on 2017/12/1 14:2914 * @Modified By:15 * @Class Description:16 */

17 public classServerMQTT {18

19 //tcp://MQTT安装的服务器地址:MQTT定义的端口号

20 public static final String HOST = "tcp://localhost:61613";21 //定义一个主题

22 public static final String TOPIC = "huhy";23 //定义MQTT的ID,可以在MQTT服务配置中指定

24 private static final String clientid = "server";25

26 privateMqttClient client;27 privateMqttTopic topic11;28 private String userName = "admin"; //非必须

29 private String passWord = "password"; //非必须

30

31 privateMqttMessage message;32

33 /**34 * 构造函数35 * @throws MqttException36 */

37 publicServerMQTT() throws MqttException {38 //MemoryPersistence设置clientid的保存形式,默认为以内存保存

39 client = new MqttClient(HOST, clientid, newMemoryPersistence());40 connect();41 }42

43 /**44 * 用来连接服务器45 */

46 private voidconnect() {47 MqttConnectOptions options = newMqttConnectOptions();48 options.setCleanSession(false);49 options.setUserName(userName);50 options.setPassword(passWord.toCharArray());51 //设置超时时间

52 options.setConnectionTimeout(10);53 //设置会话心跳时间

54 options.setKeepAliveInterval(20);55 try{56 client.setCallback(newPushCallback());57 client.connect(options);58

59 topic11 =client.getTopic(TOPIC);60 } catch(Exception e) {61 e.printStackTrace();62 }63 }64

65 /**66 *67 * @param topic68 * @param message69 * @throws MqttPersistenceException70 * @throws MqttException71 */

72 public voidpublish(MqttTopic topic , MqttMessage message) throws MqttPersistenceException,73 MqttException {74 MqttDeliveryToken token =topic.publish(message);75 token.waitForCompletion();76 System.out.println("message is published completely!"

77 +token.isComplete());78 }79

80 /**81 * 启动入口82 * @param args83 * @throws MqttException84 */

85 public static voidmain(String[] args) throws MqttException, InterruptedException {86 ServerMQTT server = newServerMQTT();87 server.message = newMqttMessage();88 server.message.setQos(1); //保证消息能到达一次

89 server.message.setRetained(true);90 server.message.setPayload("abcde1".getBytes());91 server.publish(server.topic11 , server.message);92 Thread.sleep(2000);93 server.message.setPayload("abcde2".getBytes());94 server.publish(server.topic11 , server.message);95 Thread.sleep(2000);96 server.message.setPayload("abcde3".getBytes());97 server.publish(server.topic11 , server.message);98 System.out.println(server.message.isRetained() + "------ratained状态");99 }100 }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值