使用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. Apache HttpComponents 多线程处理HTTP请求

    /* * ==================================================================== * * Licensed to the Apache ...

  2. 官网下载到离线的Adobe Acrobat Reader DC

    Adobe 官方 FTP :ftp://ftp.adobe.com/ Adobe Acrobat Reader DC 下载目录:ftp://ftp.adobe.com/pub/adobe/reader ...

  3. MySQL5.7远程连接和增加密码

    主要是5.7的很多操作和以前版本不一样,所以踩了很多坑. 1. 远程连接cant connect to mysql (10061) 一开始以为是权限问题,所以参考了详解 MySQL 5.7 新的权限与 ...

  4. hbase 部署

    hbase的部署相对于java来说就比较简单啦,主要过程如下: 1.下载hbase最新的稳定版 2.拷贝到相应的目录 3.修改conf目录下的hbase-env.sh,设置java 和不适用内置的zo ...

  5. 执行大数据量SQL文件

    sqlserver2008中需要执行大文件的脚本,查询分析器中打不开,需要用到sql命令,开始使用osql命令 使用sqlcmd可以执行:在DOS中,调用sqlcmd命令,并使用对应选项    sql ...

  6. ASP.NET MVC 使用 Datatables (2)

    在服务器端实现分页,排序,获取当前页面数据 在上篇的基础上进行改造(datatables的客户端实现) 1.修改View页面代码如下: <div class="row"> ...

  7. Python 字符串语法,for

    #-*- coding:utf-8 -*- #字符串的拼接方式一 a = "hello" b = "world" c = a + " " + ...

  8. main函数位置

    c语言中main函数的位置可以任意位置.在执行一个c语言编写的程序时,main函数就相当于是执行程序的入口.只要是没有语法和逻辑上的错误,main函数可以放在任意位置.

  9. 【转】MFC 字体LOGFONT

    Windows的字体LOGFONT LOGFONT是Windows内部字体的逻辑结构,主要用于设置字体格式,其定义如下:typedef struct tagLOGFONTA{    LONG      ...

  10. C++中函数的返回值

    原文 [ 函数的返回值用于初始化在调用函数处创建的临时对象.在求解表达式时,如果需要一个地方储存其运算结果,编译器会创建一个没有命名的对象,这就是 临时对象.temporary object ] -- ...