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
    评论
fusesource mqtt-client 是一个开的MQTT(Message Queuing Telemetry Transport)客户端库,用于在Java应用程序中实现MQTT协议的通信。下面是对该文档的回答: fusesource mqtt-client文档是关于如何使用fusesource mqtt-client库的详细说明和指南。该文档提供了全面的介绍,包括安装和配置mqtt-client库的步骤,以及如何在Java应用程序中建立与MQTT代理的连接。 该文档首先介绍了MQTT协议的基本概念和特点,以及它在物联网和实时通信中的应用。接着介绍了mqtt-client库的特点和优势,比如轻量级、可靠性等。 接下来,该文档详细解释了如何安装和配置mqtt-client库。它介绍了如何通过添加依赖来集成mqtt-client库,并提供了示例代码和配置文件来帮助用户快速上手。 文档还提供了关于如何建立与MQTT代理的连接的指导。它解释了不同类型的连接选项,如MQTT的各种质量等级,以及如何处理连接丢失和重新连接的情况。 此外,文档还介绍了如何发布和订阅MQTT主题,以及如何处理收到的消息。它提供了示例代码和解释,使用户能够在自己的应用程序中快速实现相关功能。 总而言之,fusesource mqtt-client文档提供了一个全面而详细的指南,以帮助Java开发者使用mqtt-client库来实现MQTT协议的通信。无论是初学者还是有经验的开发者,该文档都能够提供有价值的指导和参考。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值