java用mqtt收发消息

import org.eclipse.paho.client.mqttv3.MqttCallback;
import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
import org.eclipse.paho.client.mqttv3.MqttDeliveryToken;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.eclipse.paho.client.mqttv3.MqttTopic;


public class Test {
     
	private static String hostName="tcp://xxx:1883";//"tcp://iot.eclipse.org:1883";
    public static String uuid="xxx";
	public static String token="xx";	
	private static String username= uuid ;
	private static String password= token ;
	private static String subscribeTopic= uuid ;
	private static String publisheTopic= "message" ;
	private static String sendMsg="{\"devices\":\""+uuid+"\",\"payload\":{\"param1\":\"value1\"}}";
	private static MqttClient client ;
	public static void main(String[] args) {
	     //订阅消息的方法  
		subscribe(); 
        //发布消息的类  
		publish();
	}
	  public static String subscribe() {   
	        try {   
	            //创建MqttClient  
	        	client=new MqttClient(hostName,"11");   
	            client.setCallback(new MqttCallback(){
					public void connectionLost(Throwable arg0) {
					}
					public void deliveryComplete(MqttDeliveryToken arg0) {
					}
					public void messageArrived(MqttTopic topic, MqttMessage message)
							throws Exception {
				        try {   
				            System.out.println(" 从服务器收到的消息为:"+message.toString());  
				        } catch (Exception e) {   
				            e.printStackTrace();   
				        } 
					}
	            	
	            });
	            MqttConnectOptions conOptions = new MqttConnectOptions();   
	            conOptions.setUserName(username);
	            conOptions.setPassword(password.toCharArray());
	            conOptions.setCleanSession(false);   
	            client.connect(conOptions);   
	            client.subscribe(subscribeTopic, 1); 
	            boolean isSuccess =client.isConnected();
	            System.out.println("连接状态:"+isSuccess);
	            //client.disconnect();   
	        } catch (Exception e) {   
	            e.printStackTrace();   
	            return "failed";   
	        }   
	        return "success";   
	    } 
	  
	    public static void publish(){   
	        try {   
	            MqttTopic topic = client.getTopic(publisheTopic);   
	            System.out.println("发送的消息内容为:"+sendMsg);
	            MqttMessage message = new MqttMessage(sendMsg.getBytes());   
	            message.setQos(1);   
	            while(true){  
	                MqttDeliveryToken token = topic.publish(message); 
	                while (!token.isComplete()){   
	                    token.waitForCompletion(1000);   
	                }   
	            }  
	        } catch (Exception e) {   
	            e.printStackTrace();   
	        }   
	    }  
}


  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值