MQTT moquette 的Server发布主题

  1. package com.etrip.mqtt.future;
  2. import java.net.URISyntaxException;
  3. import org.fusesource.mqtt.client.FutureConnection;
  4. import org.fusesource.mqtt.client.MQTT;
  5. import org.fusesource.mqtt.client.QoS;
  6. import org.fusesource.mqtt.client.Topic;
  7. import org.slf4j.Logger;
  8. import org.slf4j.LoggerFactory;
  9. /**
  10. *
  11. *
  12. *
  13. * 采用Future式 发布主题
  14. *
  15. * @author longgangbai
  16. */
  17. public class MQTTFutureServer {
  18. private static final Logger LOG = LoggerFactory.getLogger(MQTTFutureServer.class);
  19. private final static String CONNECTION_STRING = "tcp://192.168.208.46:1883";
  20. private final static boolean CLEAN_START = true;
  21. private final static short KEEP_ALIVE = 30;// 低耗网络,但是又需要及时获取数据,心跳30s
  22. public  static Topic[] topics = {
  23. new Topic("china/beijing", QoS.EXACTLY_ONCE),
  24. new Topic("china/tianjin", QoS.AT_LEAST_ONCE),
  25. new Topic("china/henan", QoS.AT_MOST_ONCE)};
  26. public final  static long RECONNECTION_ATTEMPT_MAX=6;
  27. public final  static long RECONNECTION_DELAY=2000;
  28. public final static int SEND_BUFFER_SIZE=2*1024*1024;//发送最大缓冲为2M
  29. public static void main(String[] args)   {
  30. MQTT mqtt = new MQTT();
  31. try {
  32. //设置服务端的ip
  33. mqtt.setHost(CONNECTION_STRING);
  34. //连接前清空会话信息
  35. mqtt.setCleanSession(CLEAN_START);
  36. //设置重新连接的次数
  37. mqtt.setReconnectAttemptsMax(RECONNECTION_ATTEMPT_MAX);
  38. //设置重连的间隔时间
  39. mqtt.setReconnectDelay(RECONNECTION_DELAY);
  40. //设置心跳时间
  41. mqtt.setKeepAlive(KEEP_ALIVE);
  42. //设置缓冲的大小
  43. mqtt.setSendBufferSize(SEND_BUFFER_SIZE);
  44. //创建连接
  45. final FutureConnection connection= mqtt.futureConnection();
  46. connection.connect();
  47. int count=1;
  48. while(true){
  49. count++;
  50. // 用于发布消息,目前手机段不需要向服务端发送消息
  51. //主题的内容
  52. String message="hello "+count+"chinese people !";
  53. String topic = "china/beijing";
  54. connection.publish(topic, message.getBytes(), QoS.AT_LEAST_ONCE,
  55. false);
  56. System.out.println("MQTTFutureServer.publish Message "+"Topic Title :"+topic+" context :"+message);
  57. }
  58. } catch (URISyntaxException e) {
  59. // TODO Auto-generated catch block
  60. e.printStackTrace();
  61. } catch (Exception e) {
  62. // TODO Auto-generated catch block
  63. e.printStackTrace();
  64. }
  65. }
  66. }

MQTT moquette 的Client接收主题

  1. package com.etrip.mqtt.future;
  2. import java.net.URISyntaxException;
  3. import org.fusesource.mqtt.client.Future;
  4. import org.fusesource.mqtt.client.FutureConnection;
  5. import org.fusesource.mqtt.client.MQTT;
  6. import org.fusesource.mqtt.client.Message;
  7. import org.fusesource.mqtt.client.QoS;
  8. import org.fusesource.mqtt.client.Topic;
  9. import org.slf4j.Logger;
  10. import org.slf4j.LoggerFactory;
  11. /**
  12. *
  13. * MQTT moquette 的Client 段用于订阅主题,并接收主题信息
  14. *
  15. * 采用Future 式 订阅主题
  16. *
  17. * @author longgangbai
  18. */
  19. public class MQTTFutureClient {
  20. private static final Logger LOG = LoggerFactory.getLogger(MQTTFutureClient.class);
  21. private final static String CONNECTION_STRING = "tcp://192.168.208.46:1883";
  22. private final static boolean CLEAN_START = true;
  23. private final static short KEEP_ALIVE = 30;// 低耗网络,但是又需要及时获取数据,心跳30s
  24. private final static String CLIENT_ID = "publishService";
  25. public  static Topic[] topics = {
  26. new Topic("china/beijing", QoS.EXACTLY_ONCE),
  27. new Topic("china/tianjin", QoS.AT_LEAST_ONCE),
  28. new Topic("china/henan", QoS.AT_MOST_ONCE)};
  29. public final  static long RECONNECTION_ATTEMPT_MAX=6;
  30. public final  static long RECONNECTION_DELAY=2000;
  31. public final static int SEND_BUFFER_SIZE=2*1024*1024;//发送最大缓冲为2M
  32. public static void main(String[] args)   {
  33. //创建MQTT对象
  34. MQTT mqtt = new MQTT();
  35. try {
  36. //设置mqtt broker的ip和端口
  37. mqtt.setHost(CONNECTION_STRING);
  38. //连接前清空会话信息
  39. mqtt.setCleanSession(CLEAN_START);
  40. //设置重新连接的次数
  41. mqtt.setReconnectAttemptsMax(RECONNECTION_ATTEMPT_MAX);
  42. //设置重连的间隔时间
  43. mqtt.setReconnectDelay(RECONNECTION_DELAY);
  44. //设置心跳时间
  45. mqtt.setKeepAlive(KEEP_ALIVE);
  46. //设置缓冲的大小
  47. mqtt.setSendBufferSize(SEND_BUFFER_SIZE);
  48. //获取mqtt的连接对象BlockingConnection
  49. final FutureConnection connection= mqtt.futureConnection();
  50. connection.connect();
  51. connection.subscribe(topics);
  52. while(true){
  53. Future<Message> futrueMessage=connection.receive();
  54. Message message =futrueMessage.await();
  55. System.out.println("MQTTFutureClient.Receive Message "+ "Topic Title :"+message.getTopic()+" context :"+String.valueOf(message.getPayloadBuffer()));
  56. }
  57. } catch (URISyntaxException e) {
  58. // TODO Auto-generated catch block
  59. e.printStackTrace();
  60. } catch (Exception e) {
  61. // TODO Auto-generated catch block
  62. e.printStackTrace();
  63. }finally{
  64. }
  65. }
  66. }

MQTT的学习研究(十二) MQTT moquette 的 Future API 消息发布订阅的实现的更多相关文章

  1. MQTT的学习研究(十四) MQTT moquette 的 Callback API 消息发布订阅的实现

    在moquette-mqtt中提供了回调callback模式的发布和订阅但是在订阅之后没有发现有消息接收的方法,参看moquette-mqtt中Block,Future式的发布订阅基础是callbac ...

  2. MQTT的学习研究(二)moquette-mqtt 的使用之mqtt broker的启动

    在MQTT 官网 (http://mqtt.org/software)中有众多MQTT的实现方式.具体参看官网,Moquette是基于Apache Mina 的模型的一个Java MQTT broke ...

  3. python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL

    python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL实战例子:使用pyspider匹配输出带.html结尾的URL:@config(a ...

  4. Go语言学习笔记十二: 范围(Range)

    Go语言学习笔记十二: 范围(Range) rang这个关键字主要用来遍历数组,切片,通道或Map.在数组和切片中返回索引值,在Map中返回key. 这个特别像python的方式.不过写法上比较怪异使 ...

  5. Tensorflow深度学习之十二:基础图像处理之二

    Tensorflow深度学习之十二:基础图像处理之二 from:https://blog.csdn.net/davincil/article/details/76598474   首先放出原始图像: ...

  6. MQTT的学习研究(十)【转】mosquitto——一个开源的mqtt代理

    MQTT(MQ Telemetry Transport),消息队列遥测传输协议,轻量级的发布/订阅协议,适用于一些条件比较苛刻的环境,进行低带宽.不可靠或间歇性的通信.值得一提的是mqtt提供三种不同 ...

  7. MQTT的学习研究(五) MQTT moquette 的 Blocking API 发布消息服务端使用

    参看官方文档: http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/index.jsp?topic=/com.ibm.mq.amqtat.doc/t ...

  8. MQTT的学习研究(十一) IBM MQTT 简单发布订阅实例

    package com.etrip.push; import com.ibm.mqtt.MqttAdvancedCallback; import com.ibm.mqtt.MqttClient; im ...

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

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

随机推荐

  1. DatagridView内容自动换行和换行符换行

    内容自动换行: 在 DataGridView 新增 Row 时,設定 DataGridView 的 DefaultCellStyle 屬性WrapMode=true: 换行符换行: 在 DataGri ...

  2. IPC介绍——10个ipcs例子

    IPC介绍——10个ipcs例子 semaphorearrays2010performancesystemaccess ipcs是一个uinx/linux的命令.用于报告系统的消息队列.信号量.共享内 ...

  3. uboot中MAC网络(待续)

    start ->start_armboot ->main_loop 实际应用中问题:为什么从nandflash读出的MAC(写到物理phy上)与上层网口地址不同(上层网口采用env的mac ...

  4. window上将MongoDB的启动加入到服务中

    在系统管理员的命令行模式中: 进入mongo的安装目录,参照如下: 其中: --dbpath为保存的数据的路径 mongod --bind_ip --serviceName "MongoDB ...

  5. MySQL的最大连接数

    mysql的最大连接数默认是100, 这个数值对于并发连接很多的数据库应用是远远不够的,当连接请求大于默认连接数后,就会出现无法连接数据库的错误,因此我们需要把它适当调大一些 设置新的MySQL最大连 ...

  6. 免费CA数字证书的申请、安装、导入、导出

    http://wenku.baidu.com/link?url=oDUw50eCE5zX8tmg4N3-ddYGLt1U5aJYGEN7rk_z7t6LuMHL3M4oBstYBI_dQ1UnCtcK ...

  7. Oracle中的job的定时任务

    Oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务. 一.查询系统中的job,可以查询视图 --相关视图 select * from dba_jobs; selec ...

  8. k近邻法(KNN)和KMeans算法

    k近邻算法(KNN): 三要素:k值的选择,距离的度量和分类决策规则 KMeans算法,是一种无监督学习聚类方法: 通过上述过程可以看出,和EM算法非常类似.一个简单例子, k=2: 畸变函数(dis ...

  9. (转)x264代码详细阅读之x264.c,common.c,encoder.c

    转自:http://alphamailpost.blog.163.com/blog/static/201118081201281103931932/ x264代码详细阅读第一之x264.chttp:/ ...

  10. (转)x264参数中文详解(X264 Settings)

    0 解释x264命令可选项的用途和使用方法.同执行 x264 --fullhelp 显示顺序.本文主要翻译:mewiki.project357.com/wiki/X264_Settings,同时参考d ...