- 浏览: 7330413 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (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的信息
package com.etrip.push; import com.ibm.mqtt.MqttAdvancedCallback; import com.ibm.mqtt.MqttClient; import com.ibm.mqtt.MqttException; import com.ibm.mqtt.MqttSimpleCallback; /** * Android推送方案分析(MQTT/XMPP/GCM) 方案1、 使用GCM服务(Google Cloud Messaging) 简介:Google推出的云消息服务,即第二代的G2DM。 优点:Google提供的服务、原生、简单,无需实现和部署服务端。 缺点:Android版本限制(必须大于2.2版本),该服务在国内不够稳定、需要用户绑定Google帐号,受限于Google。 方案2、 使用XMPP协议(Openfire + Spark + Smack) 简介:基于XML协议的通讯协议,前身是Jabber,目前已由IETF国际标准化组织完成了标准化工作。 优点:协议成熟、强大、可扩展性强、目前主要应用于许多聊天系统中,且已有开源的Java版的开发实例androidpn。 缺点:协议较复杂、冗余(基于XML)、费流量、费电,部署硬件成本高。 方案3、 使用MQTT协议 简介:轻量级的、基于代理的“发布/订阅”模式的消息传输协议。 优点:协议简洁、小巧、可扩展性强、省流量、省电,目前已经应用到企业领域(参考: 且已有C++版的服务端组件rsmb。 缺点:不够成熟、实现较复杂、服务端组件rsmb不开源,部署硬件成本较高。 方案4、 使用HTTP轮循方式 简介:定时向HTTP服务端接口(Web Service API)获取最新消息。 优点:实现简单、可控性强,部署硬件成本低。 缺点:实时性差。 对各个方案的优缺点的研究和对比,推荐使用MQTT协议的方案进行实现,主要原因是: MQTT最快速,也最省流量 (固定头长度仅为2字节),且极易扩展,适合二次开发 。接下来,我们就来分析使用MQTT方案进行Android消息的原理 和方法,并架设自己的推送服务。 * */ public class MQTTPubSub { 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 = "client1"; public String PUBLISH_TOPICS="tokudu/china"; private final static String[] TOPICS = { "Test/TestTopics/Topic1", "Test/TestTopics/Topic2", "Test/TestTopics/Topic3", "tokudu/china" }; private final static int[] QOS_VALUES = {0, 0, 2, 0}; ////////////////// private MqttClient mqttClient = null; public MQTTPubSub(){ try { //创建MqttClient对象 mqttClient = new MqttClient(CONNECTION_STRING); //创建回调处理器 SimpleCallbackHandler simpleCallbackHandler = new SimpleCallbackHandler(); //mqttClient.registerSimpleHandler(simpleCallbackHandler);//注册接收消息方法 mqttClient.registerAdvancedHandler(new AdvancedCallbackHandler());//注册接收消息方法 //创建连接 mqttClient.connect(CLIENT_ID, CLEAN_START, KEEP_ALIVE); //订阅接主题 mqttClient.subscribe(TOPICS, QOS_VALUES); /** * 完成订阅后,可以增加心跳,保持网络通畅,也可以发布自己的消息 */ mqttClient.publish(PUBLISH_TOPICS, "keepalive".getBytes(), QOS_VALUES[0], true); } catch (MqttException e) { e.printStackTrace(); } } /** * 简单回调函数,处理client接收到的主题消息 * @author pig * */ class SimpleCallbackHandler implements MqttSimpleCallback{ /** * 当客户机和broker意外断开时触发 * 可以再此处理重新订阅 */ @Override public void connectionLost() throws Exception { System.out.println("客户机和broker已经断开"); } /** * 客户端订阅消息后,该方法负责回调接收处理消息 */ @Override public void publishArrived(String topicName, byte[] payload, int Qos, boolean retained) throws Exception { System.out.println("订阅主题: " + topicName); System.out.println("消息数据: " + new String(payload)); System.out.println("消息级别(0,1,2): " + Qos); System.out.println("是否是实时发送的消息(false=实时,true=服务器上保留的最后消息): " + retained); } } /** * 高级回调 * @author pig * */ class AdvancedCallbackHandler implements MqttAdvancedCallback{ @Override public void connectionLost() throws Exception { // TODO Auto-generated method stub } /** * 接收到的消息的信息 */ @Override public void publishArrived(String topicName, byte[] payload, int Qos, boolean retained) throws Exception { System.out.println("订阅主题: " + topicName); System.out.println("消息数据: " + new String(payload)); System.out.println("消息级别(0,1,2): " + Qos); System.out.println("是否是实时发送的消息(false=实时,true=服务器上保留的最后消息): " + retained); } @Override public void published(int arg0) { // TODO Auto-generated method stub } @Override public void subscribed(int Qos, byte[] payload) { System.out.println("消息数据: " + new String(payload)); System.out.println("消息级别(0,1,2): " + Qos); } @Override public void unsubscribed(int arg0) { // TODO Auto-generated method stub } } /** * @param args */ public static void main(String[] args) { new MQTTPubSub(); } }
评论
4 楼
longgangbai
2013-07-19
bluerose 写道
同样的问题。没找到advanced这几个类。难道是楼主自己封装的?
楼主你写了这么多篇关于mqtt的,也有很多例子。但是没有说明在什么情况下使用哪类。看了觉得还是有疑惑。
楼主你写了这么多篇关于mqtt的,也有很多例子。但是没有说明在什么情况下使用哪类。看了觉得还是有疑惑。
mqtt的新版本里没有 MqttAdvancedCallback这个类.这个旧版本 的.
3 楼
longgangbai
2013-07-19
bluerose 写道
同样的问题。没找到advanced这几个类。难道是楼主自己封装的?
楼主你写了这么多篇关于mqtt的,也有很多例子。但是没有说明在什么情况下使用哪类。看了觉得还是有疑惑。
楼主你写了这么多篇关于mqtt的,也有很多例子。但是没有说明在什么情况下使用哪类。看了觉得还是有疑惑。
AdvancedCallbackHandler 是自定义实现的.
2 楼
bluerose
2013-07-16
同样的问题。没找到advanced这几个类。难道是楼主自己封装的?
楼主你写了这么多篇关于mqtt的,也有很多例子。但是没有说明在什么情况下使用哪类。看了觉得还是有疑惑。
楼主你写了这么多篇关于mqtt的,也有很多例子。但是没有说明在什么情况下使用哪类。看了觉得还是有疑惑。
1 楼
fecasmoy123
2013-02-19
请问 com.ibm.mqtt.MqttAdvancedCallback;
com.ibm.mqtt.MqttClient;
com.ibm.mqtt.MqttException;
com.ibm.mqtt.MqttSimpleCallback;
这几个类是在那个jar包中的,能否指教一下,谢谢。
com.ibm.mqtt.MqttClient;
com.ibm.mqtt.MqttException;
com.ibm.mqtt.MqttSimpleCallback;
这几个类是在那个jar包中的,能否指教一下,谢谢。
发表评论
-
TestNG简单的学习(十三)TestNG中Junit的实现
2013-12-04 09:00 3352TestNG和junit的整合 ... -
TestNG简单的学习(十二)TestNG运行
2013-12-03 09:08 51574文档来自官方地址: ... -
TestNG简单的学习(十一)TestNG学习总结
2013-12-03 09:08 14174最近一直在学习关于TestNG方面的知识,根 ... -
TestNG简单的学习(十)TestNG @Listeners 的使用
2013-12-03 09:07 8687TestNG官方网站: http://testng.or ... -
TestNG简单的学习(九)TestNG Method Interceptors 的使用
2013-12-03 09:07 2709TestNG官方网站: http://testng ... -
TestNG简单的学习(八)TestNG Annotation Transformers 的使用
2013-12-03 09:07 2804TestNG官方网站: http://testng.or ... -
TestNG简单的学习(七)TestNG编程方式运行
2013-12-02 09:22 2448TestNG官方网站: http://testng.or ... -
TestNG简单的学习(六)测试工厂注释的使用
2013-12-02 09:22 2778TestNG官方网站: http://testng.or ... -
TestNG简单的学习(五)参数化测试数据的定制
2013-12-02 09:22 2697TestNG官方网站: http://testng.or ... -
TestNG简单的学习(四)测试方法通过名称名称依赖实现
2013-12-02 09:21 2078TestNG官方网站: http://testng.or ... -
TestNG简单的学习(三)测试方法通过测试分组依赖实现
2013-12-02 09:21 2825TestNG官方网站: http://testng.or ... -
TestNG简单的学习(二)参数化测试并发且多方法测试方法判定
2013-11-29 15:35 3694TestNG官方网站: http://testng.or ... -
TestNG简单的学习(一)类和方法级别@Test的区别
2013-11-29 15:31 9420TestNG官方文档的地址: http://testng ... -
Feed4Junit的简单使用(七)Feed4TestNg
2013-11-29 13:35 6128在Feed4Junit主要针对junit实现的 ... -
Feed4Junit的简单使用(六)数据来特定格式文件
2013-11-29 12:29 2763Feed4Junit官方地址: http://da ... -
Feed4Junit的简单使用(五)数据来自动态约束数据
2013-11-29 12:29 2624Feed4Junit官方地址: http://datab ... -
Feed4Junit的简单使用(四)数据来自定义数据源
2013-11-28 14:09 3095Feed4Junit官方地址: http://databe ... -
Feed4Junit的简单使用(三)数据源来自数据库
2013-11-28 13:58 3164Feed4Junit官方地址: http://databe ... -
Feed4Junit的简单使用(二)数据源来自文件
2013-11-28 13:50 4565Feed4Junit官方地址: http://datab ... -
Feed4Junit的简单使用(一)
2013-11-28 13:47 2207Feed4Junit官方地址: http://databe ...
相关推荐
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)是一种构建于TCP/IP协议的"轻量级"消息传输协议,它基于发布/订阅(publish/subscribe)模式,由IBM在1999年发布。对于需要较小代码占用空间或...
MQTT(Message Queuing Telemetry Transport)是IBM开发的一种轻量级发布/订阅协议,常用于物联网(IoT)设备间的数据交换。 在这个“java IBM MQ 7.5.0 生产者和消费者实例”中,我们将探讨如何使用Java编程语言与...
在这个案例中,开发者可能创建了一个Golang程序,它首先连接到MQTT服务器(例如,IBM的云 MQTT 服务或自建的MQTT broker),然后订阅一个或多个主题。订阅过程通常包括以下步骤: 1. 初始化MQTT客户端:创建一个...
MQTT采用发布/订阅模型,其中客户端可以作为发布者或订阅者。发布者将消息发送到特定的主题(topic),而订阅者则监听感兴趣的主题并接收消息。服务器,也称为MQTT代理,负责路由消息到正确的订阅者。 要使用...
MQTT基于发布/订阅模式,其中,消息发布者将数据发送到特定主题(topic),而消息订阅者则根据他们订阅的主题来接收这些数据。这种模式允许数据的广播,同时保持低延迟和高效性。MQTT协议使用TCP/IP协议栈,确保了...
5. **发布和订阅**:使用`MQTTClient_publish`函数发布消息到指定的主题,而`MQTTClient_subscribe`函数用于订阅主题,以接收来自服务器的消息。 6. **处理回调**:为了接收订阅主题的消息,你需要设置一个回调函数...
提供的demo可能是一个简单的Delphi应用程序,展示如何使用这些源码连接到MQTT服务器,发布和订阅消息。用户可以通过修改配置来连接不同的MQTT服务器,测试发布订阅功能。 【学习与应用】 学习这个源码可以帮助...
MQTT(Message Queuing Telemetry Transport)是一种轻量级的发布/订阅消息协议,广泛应用于物联网(IoT)领域。它设计的目标是减少网络带宽和设备资源,使得低功耗设备如传感器或移动设备可以在不可靠的网络环境下...
MQTT(Message Queuing Telemetry Transport)是一种轻量级的发布/订阅消息协议,常用于物联网(IoT)设备之间的通信。Python中的Paho库提供了方便的API来实现MQTT客户端,使得在Python中进行MQTT编程变得简单。 ...
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和...
以下是一个简单的 Java MQTT 发布订阅示例: ```java import org.eclipse.paho.client.mqttv3.*; public class MqttExample { public static void main(String[] args) { // 创建 MQTT 客户端实例 MqttClient ...
它是一种发布/订阅,极其简单和轻量级的消息传递协议,专为受限设备和低带宽,高延迟或不可靠的网络而设计。它的设计思想是轻巧、开放、简单、规范,易于实现。这些特点使得它对很多场景来说都是很好的选择,特别是...
MQTT客户端是连接到MQTT服务器(也称为消息代理,如Apache ActiveMQ或IBM MessageSight)的软件实体,负责发布消息、订阅主题以及接收消息。客户端通常需要实现以下核心功能: - 连接和断开与服务器的连接。 - 订阅...
在使用phpMQTT库时,首先需要实例化类,然后连接到MQTT服务器,接着可以进行订阅和发布操作。例如: ```php require_once 'phpMQTT.php'; $mqtt = new phpMQTT("your_mqtt_broker_host", 1883, "client_id"); if (!...
3. **灵活的消息分发**:MQTT支持发布/订阅模式,允许消息发布者和订阅者之间进行解耦,从而提高了系统的灵活性和可扩展性。 4. **负载均衡**:通过负载均衡技术,可以将消息分发到多个服务器上,提高系统的整体性能...
MQTT(Message Queuing Telemetry Transport)是一种轻量级的发布/订阅模型的消息传输协议,广泛应用于物联网(IoT)环境中,尤其适合资源有限的设备。其特点是低带宽需求、低功耗以及高可靠性,这些特性使得MQTT成为...
MQTT,全称为Message Queuing Telemetry Transport,是由IBM设计的一种轻量级的发布/订阅(Publish/Subscribe)消息协议,主要用于远程位置的设备通信,尤其适合低带宽、高延迟或不可靠的网络环境。这个协议在物联网...
接下来,我们创建一个简单的MQTT客户端实例: 1. 初始化MQTT连接配置,包括服务器URL、端口、用户名和密码: ```java MqttConnectOptions connOpts = new MqttConnectOptions(); connOpts.setServerURIs(new String...
MQTT(Message Queuing Telemetry Transport)是一种轻量级的发布/订阅消息协议,常用于物联网(IoT)设备之间的通信。ChibiOS则是一个实时操作系统(RTOS),它为微控制器提供了一套全面的内核服务。这个"mqtt-chibios-...
MQTT(Message Queuing Telemetry Transport)是一种轻量级的发布/订阅消息协议,常用于物联网(IoT)设备通信,因为它的低带宽、低功耗和简单性。本资源是基于Qt官方Git库的QTMqtt模块,经过个人修改,适应了QT ...