使用IBM MQTTv3实现相关的发布订阅功能

MQTTv3的发布消息的实现:

  1. package com.etrip.mqttv3;
  2. import com.ibm.micro.client.mqttv3.MqttClient;
  3. import com.ibm.micro.client.mqttv3.MqttDeliveryToken;
  4. import com.ibm.micro.client.mqttv3.MqttMessage;
  5. import com.ibm.micro.client.mqttv3.MqttTopic;
  6. /**
  7. * MQTTV3的发布消息类
  8. *
  9. * @author longgangbai
  10. */
  11. public class MQTTPub {
  12. public static void doTest(){
  13. try {
  14. MqttClient client = new MqttClient("tcp://192.168.208.46:1883","mqttserver-pub");
  15. MqttTopic topic = client.getTopic("tokudu/china");
  16. MqttMessage message = new MqttMessage("Hello World. Hello IBM".getBytes());
  17. message.setQos(1);
  18. client.connect();
  19. while(true){
  20. MqttDeliveryToken token = topic.publish(message);
  21. while (!token.isComplete()){
  22. token.waitForCompletion(1000);
  23. }
  24. }
  25. } catch (Exception e) {
  26. e.printStackTrace();
  27. }
  28. }
  29. }

MQTTV3的订阅消息类

  1. package com.etrip.mqttv3;
  2. import com.ibm.micro.client.mqttv3.MqttClient;
  3. import com.ibm.micro.client.mqttv3.MqttConnectOptions;
  4. /**
  5. * MQTTV3的订阅消息类
  6. *
  7. * @author longgangbai
  8. */
  9. public class MQTTSubsribe {
  10. public static String doTest() {
  11. try {
  12. //创建MqttClient
  13. MqttClient client = new MqttClient("tcp://192.168.208.46:1883", "java_client0000000000");
  14. //回调处理类
  15. CallBack callback = new CallBack();
  16. client.setCallback(callback);
  17. //创建连接可选项信息
  18. MqttConnectOptions conOptions = new MqttConnectOptions();
  19. //
  20. conOptions.setCleanSession(false);
  21. //连接broker
  22. client.connect(conOptions);
  23. //发布相关的订阅
  24. client.subscribe("tokudu/china", 1);
  25. //client.disconnect();
  26. } catch (Exception e) {
  27. e.printStackTrace();
  28. return "failed";
  29. }
  30. return "success";
  31. }
  32. }

回调处理类处理订阅的消息类

  1. package com.etrip.mqttv3;
  2. import com.ibm.micro.client.mqttv3.MqttCallback;
  3. import com.ibm.micro.client.mqttv3.MqttDeliveryToken;
  4. import com.ibm.micro.client.mqttv3.MqttMessage;
  5. import com.ibm.micro.client.mqttv3.MqttTopic;
  6. /**
  7. * 回调处理类
  8. * 处理订阅的消息类
  9. *
  10. * @author longgangbai
  11. */
  12. public class CallBack implements MqttCallback {
  13. public CallBack() {
  14. }
  15. /**
  16. * 接收到信息的处理
  17. */
  18. public void messageArrived(MqttTopic topic, MqttMessage message) {
  19. try {
  20. System.out.println(" MQTTSubsribe  message.toString()"+message.toString());
  21. } catch (Exception e) {
  22. e.printStackTrace();
  23. }
  24. }
  25. public void connectionLost(Throwable cause) {
  26. }
  27. public void deliveryComplete(MqttDeliveryToken token) {
  28. }
  29. }

测试类:

  1. package com.etrip.mqttv3;
  2. /**
  3. * MQTTV3的测试类
  4. *
  5. * @author longgangbai
  6. */
  7. public class MQTTMain {
  8. public static void main(String[] args) {
  9. //订阅消息的方法
  10. MQTTSubsribe.doTest();
  11. //发布消息的类
  12. MQTTPub.doTest();
  13. }
  14. }

MQTT的学习研究(十三) IBM MQTTV3 简单发布订阅实例的更多相关文章

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

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

  2. RabbitMQ学习总结 第四篇:发布/订阅 Publish/Subscribe

    目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...

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

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

  4. MQTT协议学习研究 & Mosquitto简要教程(安装和使用)

    若初次接触MQTT协议,可先理解以下概念: [MQTT协议特点]——相比于RESTful架构的物联网系统,MQTT协议借助消息推送功能,可以更好地实现远程控制. [MQTT协议角色]——在RESTfu ...

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

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

  6. MQTT的学习研究(三)moquette-mqtt 的使用之mqtt服务发布主题信息

    接着上一篇的moquette-mqtt 的使用之broker启动之后,我们需要启动moquette-mqtt 的服务端发布消息. 在moquette-mqtt 的mqtt-client中三种方式实现发 ...

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

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

  8. MQTT的学习研究(八)基于HTTP DELETE MQTT 订阅消息服务端使用

    HTTP DELETE 订阅主题请求协议和响应协议http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/topic/com.ibm.mq.csqzau ...

  9. MQTT的学习研究(六) MQTT moquette 的 Blocking API 订阅消息客户端使用

    * 使用 Java 为 MQ Telemetry Transport 创建订户 * 在此任务中,您将遵循教程来创建订户应用程序.订户将针对主题创建预订并接收该预订的发布. * 提供了一个示例订户应用程 ...

随机推荐

  1. 核心交换机各项配置 Vlan划分、互访、ACL管控、链路聚合等

    #!Software Version V200R001C00SPC300sysname IT_ServerRoom  #交换机名称##vlan batch 10 20 30 40 50 60 70 8 ...

  2. Yarn NodeManager restart

    一.介绍默认Yarn NodeManager重启后会断开所有当前正在运行的container的状态,这意味着重启后需要重新启动container进程,该特性的作用就是把NM的状态临时保存到本地,重启后 ...

  3. springboot集成AOP管理日志

    如何将所有的通过url的请求参数以及返回结果都输出到日志中? 如果在controller的类中每个方法名都写一个log输出肯定是不明智的选择. 使用spring的AOP功能即可完成. 1. 在pom. ...

  4. EasyUi---searchbox 条件查询

    前台UI参考代码: <script type="text/javascript" charset="utf-8"> $(function(){ /* ...

  5. EasyUI项目中的自定义JS

    自定义方法: (function($) { $.extend($, { //获取下标,删除时使用 getArrayIndex :  function (array,value) { var index ...

  6. Convolution Network及其变种(反卷积、扩展卷积、因果卷积、图卷积)

    今天,主要和大家分享一下最近研究的卷积网络和它的一些变种. 首先,介绍一下基础的卷积网络. 通过PPT上的这个经典的动态图片可以很好的理解卷积的过程.图中蓝色的大矩阵是我们的输入,黄色的小矩阵是卷积核 ...

  7. IE屏蔽鼠标右键、禁止复制粘贴等功能

    <body oncontextmenu="return false" onselectstart="return false" ondragstart=& ...

  8. 【转】【OPenGL】OPenGL 画图板-- 中点算法画圆

    为了能以任意点为圆心画圆,我们可以把圆心先设为视点(相当于于将其平移到坐标原点),然后通过中点法扫描转换后,再恢复原来的视点(相当于将圆心平移回原来的位置). 圆心位于原点的圆有四条对称轴x=0,y= ...

  9. CentOS 6.5 下Vim 配置图解

    分享个CentOS 6.5 下Vim 配置图文详解,希望对大家有所帮助. 1. 登录并进入你常用的用户名下,查看其主目录 命令: # su xxx $ cd xxx $ ls -a 2.查看并建立目录 ...

  10. memcached +mysql+php 例子

    <?php header("content-type:text/html;charset=utf-8"); $memcachehost = '127.0.0.1'; $mem ...