`
longgangbai
  • 浏览: 7330335 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

MQTT的学习研究(四)moquette-mqtt 的使用之mqtt Blocking API客户端订阅并接收主题信息

阅读更多

   在上面两篇关于mqtt的broker的启动和mqtt的服务端发布主题信息之后,我们客户端需要订阅相关的信息并接收相关的主题信息。

package com.etrip.mqtt;

import java.net.URISyntaxException;

import org.fusesource.mqtt.client.BlockingConnection;
import org.fusesource.mqtt.client.MQTT;
import org.fusesource.mqtt.client.Message;
import org.fusesource.mqtt.client.QoS;
import org.fusesource.mqtt.client.Topic;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
 * 
 * MQTT moquette 的Client 段用于订阅主题,并接收主题信息
 * 
 * 采用阻塞式 订阅主题 
 * 
 * @author longgangbai
 */
public class MQTTClient {
	  private static final Logger LOG = LoggerFactory.getLogger(MQTTClient.class);
		private final static String CONNECTION_STRING = "tcp://192.168.208.46:1883";
		private final static boolean CLEAN_START = true;
		private final static short KEEP_ALIVE = 30;// 低耗网络,但是又需要及时获取数据,心跳30s
		private final static String CLIENT_ID = "publishService";
		public  static Topic[] topics = {
			    		new Topic("china/beijing", QoS.EXACTLY_ONCE),
			    		new Topic("china/tianjin", QoS.AT_LEAST_ONCE),
			    		new Topic("china/henan", QoS.AT_MOST_ONCE)};
		public final  static long RECONNECTION_ATTEMPT_MAX=6;
		public final  static long RECONNECTION_DELAY=2000;
		
		public final static int SEND_BUFFER_SIZE=2*1024*1024;//发送最大缓冲为2M
		
		
	  public static void main(String[] args)   {
		//创建MQTT对象
	    MQTT mqtt = new MQTT();
	    BlockingConnection connection=null;
	    try {
	    	//设置mqtt broker的ip和端口
			mqtt.setHost(CONNECTION_STRING);
			//连接前清空会话信息
			mqtt.setCleanSession(CLEAN_START);
			//设置重新连接的次数
			mqtt.setReconnectAttemptsMax(RECONNECTION_ATTEMPT_MAX);
			//设置重连的间隔时间
			mqtt.setReconnectDelay(RECONNECTION_DELAY);
			//设置心跳时间
			mqtt.setKeepAlive(KEEP_ALIVE);
			//设置缓冲的大小
			mqtt.setSendBufferSize(SEND_BUFFER_SIZE);
			
			
			//获取mqtt的连接对象BlockingConnection
		    connection = mqtt.blockingConnection();
		    //MQTT连接的创建 
		    connection.connect();
		    //创建相关的MQTT 的主题列表 
		    Topic[] topics = {new Topic("china/beijing", QoS.AT_LEAST_ONCE)};
		    //订阅相关的主题信息 
		    byte[] qoses = connection.subscribe(topics);
		    //
		    while(true){
			    //接收订阅的消息内容
		    	Message message = connection.receive();
		    	//获取订阅的消息内容 
			    byte[] payload = message.getPayload();
			    // process the message then:
			    LOG.info("MQTTClient Message  Topic="+message.getTopic()+" Content :"+new String(payload));
			    //签收消息的回执
			    message.ack();
			    
			    Thread.sleep(2000);
		    }
		} catch (URISyntaxException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			try {
				connection.disconnect();
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}

 

分享到:
评论
1 楼 tonytony3 2014-10-22  
while true
Thread.sleep(2000); 



所以,本质也就是轮询?

相关推荐

    mqtt-xmeter-2.0.2-jar-with-dependencies.zip

    1. **发布/订阅模式**:与传统的客户端-服务器模式不同,MQTT采用发布者-订阅者模型,发布者发送消息,订阅者接收符合其订阅主题的消息。 2. **主题(Topic)**:消息的路由标识,类似于邮件的邮箱地址,多个订阅者...

    mqtt-xmeter-syl-jar-with-dependencies.rar

    本压缩包“mqtt-xmeter-syl-jar-with-dependencies.rar”包含了一个名为“mqtt-xmeter-syl-jar-with-dependencies”的文件,这很可能是一个Java应用,用于测试和分析MQTT协议的性能。 首先,我们来深入了解MQTT协议...

    mqtt-xmeter-2.0.2-jar-with-dependencies.jar下载

    客户端是发送或接收消息的实体,服务器作为中介,负责转发消息给订阅了特定主题的客户端。主题类似于邮件的地址,它允许消息有针对性地分发到多个目的地。 JMeter是Apache软件基金会开发的一款强大的性能测试工具...

    【调试工具-mqtt-spy】mqtt客户端调试工具 mqtt-spy 详细使用教程

    【调试工具|mqtt-spy】mqtt客户端调试工具 mqtt-spy 详细使用教程

    paho.mqtt.embedded-c-master.zip_MQTT编程_c mqtt linux_mqtt_paho mq

    3. **发布/订阅模式**:MQTT的核心特性,允许客户端发布消息到一个主题,其他订阅该主题的客户端会收到这些消息。 4. **QoS(Quality of Service)服务质量**:MQTT定义了三种QoS级别(0、1、2),确保消息至少被...

    mqtt.fx-1.7.1-windows-x64位安装包

    "完美使用"的描述意味着该版本在兼容性和稳定性上已经达到了较高的水平,用户可以顺利地进行MQTT消息的发布和订阅操作。 在mqtt.fx中,你可以连接到任何支持MQTT协议的服务器,通常称为MQTT Broker。它提供了丰富的...

    mqtt-client-1.3-API文档-中文版.zip

    对应Maven信息:groupId:org.fusesource.mqtt-client,artifactId:mqtt-client,version:1.3 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和...

    mqtt.fx-1.0.0-64bit mqtt客户端

    安装文件“mqtt.fx-1.0.0-64bit.exe”是Windows平台下的可执行程序,用户只需双击即可完成安装并开始使用MQTT客户端工具。 总之,MQTT.fx是物联网开发者的得力助手,它利用Eclipse Paho的强大功能,提供了一个直观...

    mqtt-client-1.3-API文档-中英对照版.zip

    对应Maven信息:groupId:org.fusesource.mqtt-client,artifactId:mqtt-client,version:1.3 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和...

    paho.mqtt.embedded-c-master.zip

    Paho是IBM和Oracle共同发起的一个开源项目,提供了多种编程语言的客户端库,包括本文将要讨论的“paho.mqtt.embedded-c”,这是一个针对嵌入式系统的MQTT客户端实现。 标题中的“paho.mqtt.embedded-c-master.zip”...

    MQTT客户端订阅主题接收消息接口.rar

    C#作为.NET框架的主要编程语言,提供了丰富的库来实现MQTT客户端功能,其中包括订阅主题并接收消息的能力。 在这个项目"MQTT客户端订阅主题接收消息接口.rar"中,开发者使用Visual Studio 2013这一开发环境,用C#...

    mqtt-xmeter-jar-with-dependencies.jar

    jmeter-mqtt插件应用于Jmeter对mqtt服务器压力测试

    mqtt-xmeter-2.0.2-jar-with-dependencies.jar

    MQTT (Message Queue Telemetry Transport),翻译成中文就是,遥测传输协议,其主要提供了订阅/发布两种消息模式,更为简约、轻量,易于使用,特别适合于受限环境(带宽低、网络延迟高、网络通信不稳定)的消息分发...

    MQTT-3.1.1-CN.zip_MQTT-3.1.1-CN_MQTT-3.1.1-CN.pdf_mqtt 3.1.1 文档

    MQTT中文文档,帮助理解MQTT具体协议,用于创建服务器或者客户端

    基于Netty实现的MQTT客户端_netty-mqtt-client.zip

    基于Netty实现的MQTT客户端_netty-mqtt-client

    netty-codec-mqtt-4.1.74.Final-API文档-中文版.zip

    包含翻译后的API文档:netty-codec-mqtt-4.1.74.Final-javadoc-API文档-中文(简体)版.zip; Maven坐标:io.netty:netty-codec-mqtt:4.1.74.Final; 标签:netty、codec、mqtt、中文文档、jar包、java; 使用方法:...

    MQTT-3.1.1-CN(学习MQTT协议的完整中文资料)

    协议中的消息传递模式是基于主题(Topic)的,即客户端可以发布消息到某个主题,也可以订阅特定主题以接收消息。 在MQTT协议中,有几种控制消息类型,它们分别是: 1. CONNECT:客户端用来请求连接到Broker的控制...

    moquette-mqtt源码

    通过研究Moquette MQTT的源码,开发者可以深入理解MQTT协议的工作原理,并且能够自定义或扩展Moquette以适应特定的物联网应用需求。此外,这对于学习网络编程、事件驱动编程以及分布式系统的设计都有很大帮助。

    netty-codec-mqtt-4.1.73.Final-API文档-中文版.zip

    包含翻译后的API文档:netty-codec-mqtt-4.1.73.Final-javadoc-API文档-中文(简体)版.zip; Maven坐标:io.netty:netty-codec-mqtt:4.1.73.Final; 标签:codec、mqtt、netty、jar包、java、中文文档; 使用方法:...

Global site tag (gtag.js) - Google Analytics