`
longgangbai
  • 浏览: 7342960 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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

  

分享到:
评论
1 楼 灵魂跳舞· 2014-06-24  
我最近也正在弄这个东西,但是mqtt加了证书和用户名验证,这个我找了好些地方,都没看到类似的,

相关推荐

    moquette-mqtt源码

    通过研究Moquette MQTT的源码,开发者可以深入理解MQTT协议的工作原理,并且能够自定义或扩展Moquette以适应特定的物联网应用需求。此外,这对于学习网络编程、事件驱动编程以及分布式系统的设计都有很大帮助。

    Moquette-JavaMQTT轻量级broker

    在这个例子中,我们创建了一个MqttClient实例,连接到本地运行的Moquette服务器,订阅了`test/topic`主题,并向该主题发布了一条消息。 总的来说,Moquette MQTT Broker为Java开发者提供了一个简单易用、高效可靠的...

    moquette-mqtt

    在"moquette-mqtt-master"这个压缩包中,通常包含了Moquette MQTT项目的源代码、构建脚本、文档以及示例。开发者可以查看源码来了解其工作原理,或者根据自己的需求进行定制和扩展。对于想要学习MQTT协议和服务器...

    用java写的mqttbroker,实现mqtt中转通信,与mosquitto一样的功能

    首先,MQTT Broker是MQTT协议中的核心组件,它负责接收客户端的发布(Publish)消息,并将这些消息分发到订阅(Subscribe)这些主题的客户端。在Java中实现MQTT Broker,可以利用Java的网络编程能力,以及对TCP/IP...

    mqtt-netty

    Moquette 是 Java 的 MQTT 代理实现,支持 QoS 0,QoS 1 和 QoS 2。 Moquette 设计为事件,使用 Netty 作为协议编码和解码,协议逻辑本质上是单线程,并且通过 LMAX disruptor 的循环缓冲器独立于前端连接器部分。

    mqtt-xmeter

    具体参看官网,Moquette是基于netty(老版本使用的是mina) 的模型的一个Java MQTT broker,支持websocket,SSL。 如果想直接启动 moquette-broker-0.4-jar-with-dependencies.jar的jar文件方式 可以执行一些命令实现 ...

    moquette项目依赖包

    总的来说,Moquette项目依赖包是构建和运行MQTT服务器的关键组成部分,它包括了各种支持Moquette功能和运行环境的库,使得开发者能够轻松地集成和部署MQTT服务。了解这些依赖并正确管理它们对于成功构建和运行...

    java-MQTT 源码

    3. **服务质量(QoS)**:MQTT有三种服务质量:QoS 0(至多一次)、QoS 1(至少一次)和QoS 2(精确一次)。源码会展示如何实现这些不同级别的消息传递保证。 4. **持久化存储**:Moquette可能包含了如何持久化存储...

    基于netty+mqtt3.1.1+springboot+jdk8 实现的 mqtt 服务端跟客户端

    #### 已实现: * 发布订阅功能 * 遗言通知 * 会话session数据 ... * 主题过滤(/test 会接受到 /test/yy 的主题消息) * 实现标准的 qos0 qos1 qos2消息确认机制 * ssl加密 * 支持ws协议 * 集成spring容器

    Java MQTT 轻量级代理.zip

    可嵌入Freedomotic是一个家庭自动化框架,使用嵌入的 Moquette 通过特定插件与 MQTT 交互。Moquette 也被应用于物流领域的软件解决方案Atomize Spin 。部分 moquette 被用于Vertx MQTT 模块、MQTT spy 和WSO2 Messge...

    Java MQTT lightweight broker.zip

    3. **客户端连接**:使用MQTT客户端库(如Paho MQTT Java库)连接到Moquette,进行发布和订阅操作。 4. **调试与监控**:Moquette提供了一个简单的HTTP API和Web界面,用于查看连接状态和监控代理运行情况。 5. **...

    moquette源码java项目

    Moquette作为MQTT代理,主要负责处理客户端的连接、断开、订阅、发布等操作,并维护客户端的状态信息。 二、Moquette项目结构 Moquette项目的源码主要分为以下几个模块: 1. `broker`: 包含了MQTT代理的核心实现,...

    moquette-0.10.8

    MQTT 由三个主要概念构成:发布者(Publishers)、订阅者(Subscribers)和代理(Broker)。发布者发送消息到特定的主题(Topics),订阅者则可以订阅一个或多个主题以接收消息。代理作为中间人,负责转发消息给相应...

    Moquette:Java MQTT轻量级代理

    是一个家庭自动化框架,使用嵌入式Moquette通过特定与MQTT进行接口。 Moquette还用于后勤领域的软件解决方案。 一部分用于, 和。 尝试演示实例 将您的浏览器指向,请求一个帐户,然后从您的MQTT客户端使用它。 1...

    MqttMain.rar

    总结起来,这个项目展示了如何使用Eclipse Paho MQTT客户端库与Moquette代理服务器进行交互,实现Android应用中的MQTT订阅和发布功能。这对于开发物联网项目,特别是涉及Android设备与远程服务器通信的场景,具有很...

    消息推送服务器moquette

    基于MQTT消息推行协议实现的开源java服务器moquette,本资源是可执行jar包

    Android推送技术介绍和Moquette调优方案

    1、解释Android推送技术 2、MQTT协议简介 3、开源服务器实现Moquette代码解读 4、Moquette性能调优

    AndroidMQTTBroker:这是基于Java的Mosquito代理,添加了android生命周期

    AndroidMQTTBroker ...在您的android设备上运行apk,然后在其他MQTT客户端应用程序中使用设备的ip地址。 一旦建立连接,确保您的Internet正常工作,然后您就可以在2个MQTT客户端之间进行通信 执照 阿帕奇GPL

    moquette:推送服务器

    可嵌入[Freedomotic]( )是一个家庭自动化框架,使用嵌入的Moquette与MQTT世界进行接口。 Moquette还用于[Atomize Spin]( ),这是一种用于物流领域的软件解决方案。 Moquette的一部分用于[Vertx MQTT模块]( ),...

Global site tag (gtag.js) - Google Analytics