使用java开发MQTT客户端接收消息

1、搭建好MQTT服务器,可以参考EMQX企业版试用笔记_Three Big Stones的博客-CSDN博客

2、Eclipse下新建一个Maven项目,并引入mqtt客户端java版本包。

<dependency>
  <groupId>org.eclipse.paho</groupId>
    <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
    <version>1.2.2</version>
</dependency>

3、新建Main入口函数类,编写以下代码:

public static void main( String[] args )
    {
    	String subTopic="test/a";
    	String pubTopic="test/b";
    	String content = "hello java";
    	int qos=1;
    	String broker="ws://192.168.145.172:8083";
    	String clientId="mqttx_2011a483";
    	MemoryPersistence persistence = new MemoryPersistence();
    	try
    	{
    		MqttClient client = new MqttClient(broker,clientId,persistence);
    		MqttConnectOptions connOpts = new MqttConnectOptions();
    		connOpts.setUserName("test");
    		connOpts.setPassword("123456".toCharArray());
    		connOpts.setCleanSession(true);
    		
    		//设置回调
    		client.setCallback(new OnMessageCallback());
    		
    		//建立连接
    		System.out.println("Connecting to broker:"+broker);
    		client.connect(connOpts);
    		
    		//订阅
    		client.subscribe(subTopic);
    		
    		//发布消息
    		MqttMessage message = new MqttMessage(content.getBytes());
    		message.setQos(qos);
    		client.publish(pubTopic, message);
    		System.out.println("Message published");
    		
//    		client.disconnect();
//    		System.out.println("Disconnected");
//    		client.close();
//    		System.exit(0);
    	}catch(MqttException me)
    	{
    		System.out.println("reason "+me.getReasonCode());
    		System.out.println("msg "+me.getMessage());
    		System.out.println("loc "+me.getLocalizedMessage());
    		System.out.println("cause "+me.getCause());
    		System.out.println("excep "+me);
    		me.printStackTrace();
    	}
        System.out.println( "Hello World!" );
    }

注意:broker地址要用ws协议,使用官方的demo一致连接不上,换成ws就好了。

4、新建回调类,接收订阅主题的消息

package com.ppx.HelloWorld;

import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
import org.eclipse.paho.client.mqttv3.MqttCallback;
import org.eclipse.paho.client.mqttv3.MqttMessage;

public class OnMessageCallback implements MqttCallback {
	public void connectionLost(Throwable cause) {
		// TODO Auto-generated method stub
		System.out.println("连接断开,可以坐重连!");
	}

	public void messageArrived(String topic, MqttMessage message) throws Exception {
		// TODO Auto-generated method stub
		System.out.println("接收消息主题:"+topic);
		System.out.println("接收消息Qos:"+message.getQos());
		System.out.println("接收消息内容:"+new String(message.getPayload()));
	}

	public void deliveryComplete(IMqttDeliveryToken token) {
		// TODO Auto-generated method stub
		System.out.println("deliveryComplete---------" + token.isComplete());
	}

}

5、启动java程序,并在MQTT在线客户端,地址:Easy-to-Use Online MQTT Client | Try Now给主题/test/a发布一个消息。

6、在java客户端查看是否收到消息。

 

说明java客户端能正常收到消息。 

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
Java开发MQTT客户端服务端需要使用MQTT协议的Java库,例如Eclipse Paho或者Mosquitto等。以下是一个基本的MQTT客户端和服务端的代码示例: MQTT客户端: ```java import org.eclipse.paho.client.mqttv3.*; public class MqttClientExample { public static void main(String[] args) { String brokerUrl = "tcp://localhost:1883"; String clientId = "mqtt-client"; String topic = "test/topic"; int qos = 2; try { MqttClient mqttClient = new MqttClient(brokerUrl, clientId); mqttClient.connect(); MqttMessage message = new MqttMessage(); message.setPayload("Hello, MQTT!".getBytes()); message.setQos(qos); mqttClient.publish(topic, message); mqttClient.disconnect(); } catch (MqttException e) { e.printStackTrace(); } } } ``` MQTT服务端: ```java import org.eclipse.paho.server.mqttv3.*; public class MqttServerExample { public static void main(String[] args) { int port = 1883; MemoryPersistence persistence = new MemoryPersistence(); try { MqttServer mqttServer = new MqttServer(port, persistence); mqttServer.start(); mqttServer.subscribe("test/topic", (topic, message) -> { System.out.println("Received message: " + new String(message.getPayload())); }); Thread.sleep(5000); mqttServer.stop(); } catch (MqttException | InterruptedException e) { e.printStackTrace(); } } } ``` 这个示例使用了Eclipse Paho库来实现MQTT客户端和服务端。MQTT客户端连接到MQTT服务端并发布一条消息MQTT服务端订阅了该主题并打印出接收到的消息

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值