- 浏览: 7342960 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1546)
- 企业中间件 (236)
- 企业应用面临的问题 (236)
- 小布Oracle学习笔记汇总 (36)
- Spring 开发应用 (54)
- IBatis开发应用 (16)
- Oracle基础学习 (23)
- struts2.0 (41)
- JVM&ClassLoader&GC (16)
- JQuery的开发应用 (17)
- WebService的开发应用 (21)
- Java&Socket (44)
- 开源组件的应用 (254)
- 常用Javascript的开发应用 (28)
- J2EE开发技术指南 (163)
- EJB3开发应用 (11)
- GIS&Mobile&MAP (36)
- SWT-GEF-RCP (52)
- 算法&数据结构 (6)
- Apache开源组件研究 (62)
- Hibernate 学习应用 (57)
- java并发编程 (59)
- MySQL&Mongodb&MS/SQL (15)
- Oracle数据库实验室 (55)
- 搜索引擎的开发应用 (34)
- 软件工程师笔试经典 (14)
- 其他杂项 (10)
- AndroidPn& MQTT&C2DM&推技术 (29)
- ActiveMQ学习和研究 (38)
- Google技术应用开发和API分析 (11)
- flex的学习总结 (59)
- 项目中一点总结 (20)
- java疑惑 java面向对象编程 (28)
- Android 开发学习 (133)
- linux和UNIX的总结 (37)
- Titanium学习总结 (20)
- JQueryMobile学习总结 (34)
- Phonegap学习总结 (32)
- HTML5学习总结 (41)
- JeeCMS研究和理解分析 (9)
最新评论
-
lgh1992314:
[u][i][b][flash=200,200][url][i ...
看看mybatis 源代码 -
尼古拉斯.fwp:
图片根本就不出来好吧。。。。。。
Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 -
ln94223:
第一个应该用排它网关吧 怎么是并行网关, 并行网关是所有exe ...
工作流Activiti的学习总结(八)Activiti自动执行的应用 -
ZY199266:
获取不到任何消息信息,请问这是什么原因呢?
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息 -
xiaoyao霄:
DestinationSourceMonitor 报错 应该导 ...
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息
MQTT的学习研究(三)moquette-mqtt 的使用之mqtt服务发布主题信息
接着上一篇的moquette-mqtt 的使用之broker启动之后,我们需要启动moquette-mqtt 的服务端发布消息。
在moquette-mqtt 的mqtt-client中三种方式实现发布消息的方式:
1.采用阻塞式的连接的(BlockingConnection)
2.采用回调式的连接 (CallbackConnection)
3.采用Future样式的连接(FutureConnection)
本文采用阻塞式作为实验对象。
MQ 遥测传输 (MQTT) 是轻量级基于代理的发布/订阅的消息传输协议,设计思想是开放、简单、轻量、易于实现。
这些特点使它适用于受限环境。例如,但不仅限于此:
网络代价昂贵,带宽低、不可靠。
在嵌入设备中运行,处理器和内存资源有限。
该协议的特点有:
使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合。
对负载内容屏蔽的消息传输。
使用 TCP/IP 提供网络连接。
有三种消息发布服务质量:
“至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。
“至少一次”,确保消息到达,但消息重复可能会发生。
“只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。
小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量。
使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制。
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.QoS; import org.fusesource.mqtt.client.Topic; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * * * * MQTT moquette 的Server 段用于发布主题,并发布主题信息 * * 采用阻塞式 发布主题 * * @author longgangbai */ public class MQTTServer { private static final Logger LOG = LoggerFactory.getLogger(MQTTServer.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 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 = new MQTT(); try { //设置服务端的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); //创建连接 BlockingConnection connection = mqtt.blockingConnection(); //开始连接 connection.connect(); try { int count=0; while(true){ count++; //订阅的主题 String topic="china/beijing"; //主题的内容 String message="hello "+count+"chinese people !"; connection.publish(topic, message.getBytes(), QoS.AT_LEAST_ONCE, false); LOG.info("MQTTServer Message Topic="+topic+" Content :"+message); Thread.sleep(2000); } } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (URISyntaxException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
下面一篇是关于moquette-mqtt客户端接收信息的文章:
MQTT的学习研究(四)moquette-mqtt 的使用之mqtt客户端订阅并接收主题信息
永久链接: http://topmanopensource.iteye.com/blog/1699408
发表评论
-
TestNG简单的学习(十三)TestNG中Junit的实现
2013-12-04 09:00 3357TestNG和junit的整合 ... -
TestNG简单的学习(十二)TestNG运行
2013-12-03 09:08 51595文档来自官方地址: ... -
TestNG简单的学习(十一)TestNG学习总结
2013-12-03 09:08 14208最近一直在学习关于TestNG方面的知识,根 ... -
TestNG简单的学习(十)TestNG @Listeners 的使用
2013-12-03 09:07 8698TestNG官方网站: http://testng.or ... -
TestNG简单的学习(九)TestNG Method Interceptors 的使用
2013-12-03 09:07 2717TestNG官方网站: http://testng ... -
TestNG简单的学习(八)TestNG Annotation Transformers 的使用
2013-12-03 09:07 2815TestNG官方网站: http://testng.or ... -
TestNG简单的学习(七)TestNG编程方式运行
2013-12-02 09:22 2459TestNG官方网站: http://testng.or ... -
TestNG简单的学习(六)测试工厂注释的使用
2013-12-02 09:22 2790TestNG官方网站: http://testng.or ... -
TestNG简单的学习(五)参数化测试数据的定制
2013-12-02 09:22 2705TestNG官方网站: http://testng.or ... -
TestNG简单的学习(四)测试方法通过名称名称依赖实现
2013-12-02 09:21 2084TestNG官方网站: http://testng.or ... -
TestNG简单的学习(三)测试方法通过测试分组依赖实现
2013-12-02 09:21 2833TestNG官方网站: http://testng.or ... -
TestNG简单的学习(二)参数化测试并发且多方法测试方法判定
2013-11-29 15:35 3705TestNG官方网站: http://testng.or ... -
TestNG简单的学习(一)类和方法级别@Test的区别
2013-11-29 15:31 9428TestNG官方文档的地址: http://testng ... -
Feed4Junit的简单使用(七)Feed4TestNg
2013-11-29 13:35 6135在Feed4Junit主要针对junit实现的 ... -
Feed4Junit的简单使用(六)数据来特定格式文件
2013-11-29 12:29 2769Feed4Junit官方地址: http://da ... -
Feed4Junit的简单使用(五)数据来自动态约束数据
2013-11-29 12:29 2633Feed4Junit官方地址: http://datab ... -
Feed4Junit的简单使用(四)数据来自定义数据源
2013-11-28 14:09 3107Feed4Junit官方地址: http://databe ... -
Feed4Junit的简单使用(三)数据源来自数据库
2013-11-28 13:58 3171Feed4Junit官方地址: http://databe ... -
Feed4Junit的简单使用(二)数据源来自文件
2013-11-28 13:50 4573Feed4Junit官方地址: http://datab ... -
Feed4Junit的简单使用(一)
2013-11-28 13:47 2218Feed4Junit官方地址: http://databe ...
相关推荐
通过研究Moquette MQTT的源码,开发者可以深入理解MQTT协议的工作原理,并且能够自定义或扩展Moquette以适应特定的物联网应用需求。此外,这对于学习网络编程、事件驱动编程以及分布式系统的设计都有很大帮助。
在这个例子中,我们创建了一个MqttClient实例,连接到本地运行的Moquette服务器,订阅了`test/topic`主题,并向该主题发布了一条消息。 总的来说,Moquette MQTT Broker为Java开发者提供了一个简单易用、高效可靠的...
在"moquette-mqtt-master"这个压缩包中,通常包含了Moquette MQTT项目的源代码、构建脚本、文档以及示例。开发者可以查看源码来了解其工作原理,或者根据自己的需求进行定制和扩展。对于想要学习MQTT协议和服务器...
首先,MQTT Broker是MQTT协议中的核心组件,它负责接收客户端的发布(Publish)消息,并将这些消息分发到订阅(Subscribe)这些主题的客户端。在Java中实现MQTT Broker,可以利用Java的网络编程能力,以及对TCP/IP...
Moquette 是 Java 的 MQTT 代理实现,支持 QoS 0,QoS 1 和 QoS 2。 Moquette 设计为事件,使用 Netty 作为协议编码和解码,协议逻辑本质上是单线程,并且通过 LMAX disruptor 的循环缓冲器独立于前端连接器部分。
具体参看官网,Moquette是基于netty(老版本使用的是mina) 的模型的一个Java MQTT broker,支持websocket,SSL。 如果想直接启动 moquette-broker-0.4-jar-with-dependencies.jar的jar文件方式 可以执行一些命令实现 ...
总的来说,Moquette项目依赖包是构建和运行MQTT服务器的关键组成部分,它包括了各种支持Moquette功能和运行环境的库,使得开发者能够轻松地集成和部署MQTT服务。了解这些依赖并正确管理它们对于成功构建和运行...
3. **服务质量(QoS)**:MQTT有三种服务质量:QoS 0(至多一次)、QoS 1(至少一次)和QoS 2(精确一次)。源码会展示如何实现这些不同级别的消息传递保证。 4. **持久化存储**:Moquette可能包含了如何持久化存储...
#### 已实现: * 发布订阅功能 * 遗言通知 * 会话session数据 ... * 主题过滤(/test 会接受到 /test/yy 的主题消息) * 实现标准的 qos0 qos1 qos2消息确认机制 * ssl加密 * 支持ws协议 * 集成spring容器
可嵌入Freedomotic是一个家庭自动化框架,使用嵌入的 Moquette 通过特定插件与 MQTT 交互。Moquette 也被应用于物流领域的软件解决方案Atomize Spin 。部分 moquette 被用于Vertx MQTT 模块、MQTT spy 和WSO2 Messge...
3. **客户端连接**:使用MQTT客户端库(如Paho MQTT Java库)连接到Moquette,进行发布和订阅操作。 4. **调试与监控**:Moquette提供了一个简单的HTTP API和Web界面,用于查看连接状态和监控代理运行情况。 5. **...
Moquette作为MQTT代理,主要负责处理客户端的连接、断开、订阅、发布等操作,并维护客户端的状态信息。 二、Moquette项目结构 Moquette项目的源码主要分为以下几个模块: 1. `broker`: 包含了MQTT代理的核心实现,...
MQTT 由三个主要概念构成:发布者(Publishers)、订阅者(Subscribers)和代理(Broker)。发布者发送消息到特定的主题(Topics),订阅者则可以订阅一个或多个主题以接收消息。代理作为中间人,负责转发消息给相应...
是一个家庭自动化框架,使用嵌入式Moquette通过特定与MQTT进行接口。 Moquette还用于后勤领域的软件解决方案。 一部分用于, 和。 尝试演示实例 将您的浏览器指向,请求一个帐户,然后从您的MQTT客户端使用它。 1...
总结起来,这个项目展示了如何使用Eclipse Paho MQTT客户端库与Moquette代理服务器进行交互,实现Android应用中的MQTT订阅和发布功能。这对于开发物联网项目,特别是涉及Android设备与远程服务器通信的场景,具有很...
基于MQTT消息推行协议实现的开源java服务器moquette,本资源是可执行jar包
1、解释Android推送技术 2、MQTT协议简介 3、开源服务器实现Moquette代码解读 4、Moquette性能调优
AndroidMQTTBroker ...在您的android设备上运行apk,然后在其他MQTT客户端应用程序中使用设备的ip地址。 一旦建立连接,确保您的Internet正常工作,然后您就可以在2个MQTT客户端之间进行通信 执照 阿帕奇GPL
可嵌入[Freedomotic]( )是一个家庭自动化框架,使用嵌入的Moquette与MQTT世界进行接口。 Moquette还用于[Atomize Spin]( ),这是一种用于物流领域的软件解决方案。 Moquette的一部分用于[Vertx MQTT模块]( ),...