MQTT-Client-netty源码(pub/sub)

一、publish发布主题发布消息

package jmh.netty;

import io.netty.buffer.Unpooled;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.handler.codec.mqtt.MqttQoS;
import io.netty.util.concurrent.Future;
import java.io.UnsupportedEncodingException;
import nl.jk5.mqtt.MqttClient;
import nl.jk5.mqtt.MqttClientConfig;
import nl.jk5.mqtt.MqttConnectResult;

public class NettyMQTT {

  private static int qos = 2; //只有一次
  private static String host = "192.168.0.103";
  private static int port=1883;
  private static String userName = "nettypub";
  private static String passWord = "nettypub";

  public static MqttClient create(String clientid,int eventLoopNums){
    MqttClientConfig mqttClientConfig = new MqttClientConfig();
    mqttClientConfig.setUsername(userName);
    mqttClientConfig.setPassword(passWord);
    mqttClientConfig.setCleanSession(true);
    mqttClientConfig.setClientId(clientid);
    mqttClientConfig.setTimeoutSeconds(30);
    
    MqttClient mqttClient = MqttClient.create(mqttClientConfig);
    mqttClient.setEventLoop(new NioEventLoopGroup(eventLoopNums));
    return mqttClient;
  }

  public static void main(String[] args) throws UnsupportedEncodingException, InterruptedException {
    MqttClient  mqttClient =  create("netty-client-1",16);

    Future<MqttConnectResult> connectFuture = mqttClient.connect(host,port);
    connectFuture.addListener(result->{
      if(result.isSuccess()) {
        Future<Void> future = mqttClient
            .publish("jmh/netty/future/retain",
                Unpooled.wrappedBuffer("message netty 1".getBytes("utf-8")),
                MqttQoS.EXACTLY_ONCE, true);
        future.addListener(f -> {
          System.out.println("发布完成");
        });
      }
      else {
        System.out.println(result.toString());
      }
    });

    Thread.sleep(50000);
  }
}

二、subscribe订阅主题接收消息

package jmh.netty;

import io.netty.handler.codec.mqtt.MqttQoS;
import io.netty.util.concurrent.Future;
import nl.jk5.mqtt.MqttClient;
import nl.jk5.mqtt.MqttConnectResult;

public class NettySubMsg {


  private static String host = "192.168.0.103";
  private static int port=1883;

  public static void main(String[] args) throws InterruptedException {
    MqttClient mqttClient = NettyMQTT.create("netty-client-2",16);
    Future<MqttConnectResult> connectFuture = mqttClient.connect(host,port);
    connectFuture.addListener(result-> {
          if (result.isSuccess()) {
            Future<Void> future = mqttClient
                .on("jmh/netty/future/retain", (topic, byteBuf) -> {
                },MqttQoS.EXACTLY_ONCE);

            future.addListener(f -> {
              System.out.println("订阅完成");
            });
          } else {
            System.out.println(result.toString());
          }
        });
    Thread.sleep(50000);
  }

}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值