「javamqtt步骤」java调用mq实例

博主:adminadmin 2022-11-22 23:26:08 96

本篇文章给大家谈谈javamqtt步骤,以及java调用mq实例对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

mqtt 服务器搭建需要用到java吗

最近公司做的项目中有用到消息推送,经过多方面的筛选之后确定了使用MQTT协议,相对于XMPP,MQTT更加轻量级,并且占用用户很少的带宽。

MQTT是IBM推出的一种针对移动终端设备的基于TCP/IP的发布/预订协议,可以连接大量的远程传感器和控制设备。

MQTT的官网见:。其中里面提供了官方推荐的各种服务器和客户端使用的各种语言版本的API。

下面以服务器Apollo 1.6为例,之前尝试过使用ActiveMQ,效果很不理想,只能实现服务器和客户端一对一的通信,从官网上了解到Apollo属于activemq的一个子工程。先不管这些了,言归正传,以下在windows环境下。

1、在这里下载Apollo服务器,下载后解压,然后运行apache-apollo-1.6\bin\apollo.cmd,输入create mybroker(名字任意取,这里是根据官网介绍的来取的)创建服务器实例,服务器实例包含了所有的配置,运行时数据等,并且和一个服务器进程关联。

2、create mybroker之后会在bin目录下生成mybroker文件夹,里面包含有很多信息,其中etc\apollo.xml文件下是配置服务器信息的文件,etc\users.properties文件包含连接MQTT服务器时用到的用户名和密码,后面会介绍,可以修改原始的admin=password,可以接着换行添加新的用户名密码。

3、打开cmd,运行…apache-apollo-1.6\bin\mybroker\bin\apollo-broker.cmd run 开启服务器,可以在浏览器中输入查看是否安装成功,该界面展示了topic,连接数等很多信息。

经过上面的简单步骤,服务器基本上就已经完成,下一篇将介绍Android客户端的编写和注意事项。

客户端使用的API,开始我使用的是mqtt-client,使用过后发现问题百出,不能很好的满足要求,后来使用了官方推荐的Eclipse Paho,下面开始客户端代码的编写,为了方便测试这里有android和j2se两个工程:

1、新建android工程MQTTClient

2、MainActivity代码如下:

org.eclipse.paho.mqtt.java-1.0.2 怎么用

Eclipse Paho MQTT工具是一个基于Java的Eclipse桌面客户端程序,其底层的和MQTT服务器进行的交互的java类库就是Eclipse Paho java库。假设我们在本机(127.0.0.1)已经启动了一个mosquitto MQTT服务器,其端口为1883。如何使用 Eclipse Paho MQTT工具?

(1) 下载Eclipse Paho MQTT

(2) 解压缩后,双击paho.exe,打开后

(3) 点击图中的 十字图标,就能新建一个MQTT的客户端的连接,输入正确的MQTT服务端的连接地址,

比如,本例中的连接地址是tcp://localhost:1883,然后点击“Connect”按钮,这个时候,如果MQTT服务端没有设置密码(默认情况是没有密码的)的话,这个时候,我们就能看到连接得到状态(status)是“Connected”。

(4) 这个时候我们就能订阅消息了。选择“Subscription”下方的绿色十字图标,就可以输入订阅的主题(topic)的名字,比如我们设置主题名称为“test”,并点击 “Subscribe”按钮

(5) 往MQTT服务发送一条消息主题为“test”,内容为“大家好,这是我一条消息。”的MQTT消息。然后点击“Publish”按钮,这个时候,我们就能看到消息已经发送成功,且在步骤(4)订阅的同一主题也收到了消息。

java 实现串口接收到数据,立马将接收到的数据通过mqtt上传到阿里云。

也不是特别麻烦,你先要清楚串口和服务器用的什么协议,假设串口用232,服务器采用TCP,那么你需要做的是建立一个客户端的发送模块,和一个串口的操作模块(结合必须要用到多线程,以队列或者委托来做数据交换);在测试之前一定要保证串口和客户端发送接收是ok的才能做结合功能。

因为你串口已经做好了,那你需要的是将采集到的数据(字符串)保存到数组中,然后创建一个指向数组的指针p,然后在客户端模块里,将发送的数据写成p。建议先将数据转16进制发,应该没毛病。

如何对java mqtt程序测试性能

Java编程下用JMeter Java Sampler进行多接口性能测试,使用方法如下:

/**

*JMeter Java Sampler介绍

*setupTest做些初始化的工作,每个线程只执行一次

*teardownTest做些清理工作,每个线程只执行一次

*runTest具体的测试执行工作,每个并发每次循环都将执行一次

**/

//继承AbstractJavaSamplerClient

public class hessianTest extends AbstractJavaSamplerClient{

//hessian调用地址

private static String url = "";

MyService collect = null;

HessianProxyFactory factory = new HessianProxyFactory();

public int id;

@Override

public void setupTest(JavaSamplerContext arg0) {

//获取jmeter传入参数

id=arg0.getIntParameter("id");

try {

collect = (MyService) factory.create(

MyService.class, url);

} catch (MalformedURLException e) {

e.printStackTrace();

}

}

@Override

public SampleResult runTest(JavaSamplerContext arg0) {

SampleResult sp = new SampleResult();

sp.sampleStart();

User rt = null;

try {

rt = collect.getUser(id);

} catch (Exception e) {

sp.sampleEnd();

sp.setSuccessful(false);

return sp;

}

sp.sampleEnd();

if(rt.getId()==id)

sp.setSuccessful(true);

else

sp.setSuccessful(false);

return sp;

}

@Override

public void teardownTest(JavaSamplerContext context) {

super.teardownTest(context);

}

}

MQTT 基本认知

物联网 (internet of thing) ,表示的是可以把一些带某些传感器的设备(终端),接入到互联网的行为。

通过互联网连接这些设备,这些设备就能够互相协作。

而 MQTT 就是这些设备之间数据通信的一个基于 TCP/IP 的协议。

每个终端都和实现了 MQTT 协议的代理/服务器相连。

通过 published MQTT 代理服务器的某个 主题 发送数据。

通过 subscription 从 MQTT 代理服务器获取自己订阅的 主题 数据。

MQTT 协议是一种轻量级的、灵活的网络协议。并且非常适合 IOT 的场景。

大多数开发人员已经熟悉了 HTTP WEB 协议。那么为什么不让 IOT 设置链接到 WEB 服务?

设备可以采用 HTTP 请求的形式发送数据,并采用 HTTP 响应的形式从服务器获取数据,接受更新。

因为对于 IOT 的设备来说,这种 主动请求-- 被动等待应答的 数据传输模型存在严重的局限性:

那么,MQTT 为什么如此轻便且灵活?MQTT 协议的一个关键的特性是 发布/订阅模型 。它将数据的发布者和接受者分离。

一个设备终端既可以是数据的发布者 (published) 也可以是数据的订阅者 (subscription) 。

一个设备如果要发布数据,只需要往代理服务器中 相应的主题发布数据内容即可。

一个设备如果需要接受到数据,只需要在代理服务器中, 提前订阅自己需要关注的主题即可。

MQTT 最基本的体验,就是使用 mosquitto 。

Mosquitto是一款实现了 MQTT v3.1 协议的开源消息代理软件,提供轻量级的,支持发布/订阅的的消息推送模式,使设备对设备之间的短消息通信简单易用。

它可以理解成一个 MQTT 的代理服务器。

基本步骤如下:

安装成功截图

使用 brew services start mosquitto 启动 MQTT 服务

运行截图

然后再打开另外两个终端窗口,模拟两个IOT设备。A 订阅 MQTT 服务。B 向 MQTT 的服务发送数据。

A订阅当前MQTT的某个服务。

B向 MQTT 服务器发布(published) 数据。

然后,我们就可以在A控制台里看到由 B 通过 MQTT 服务发送的数据了。

基本流程图

控制台 A 向 MQTT 服务器订阅 dw/demo 服务,并被动的等待 MQTT 服务器返回数据。

控制台 B 主动的向 MQTT 服务器的 dw/demo 服务发送 published 数据,之后。服务器会主动向事先订阅了 dw/demo 的终端分发此消息。

MQTT 是一种链接协议,它指定了如何组织数据字节并通过 TCP/IP 网络传输它们。但实际上,开发人员并不需要链接这个链接协议的具体细节。我们只需要知道,每条消息都有一个命令和数据有效负载。该命令定义消息类型(比如 CONNECT 消息或者 SUB SCRIBE 消息)。所有的 MQTT 库和工具都提供了直接处理这些消息的基本方法,并且能自动填充一些必要的字段(在数据包的对应字节填充),比如消息和客户端 ID。

首先客户端发送一条 CONNECT消息 来链接代理。CONNECT 消息要求建立从客户端到代理服务器的链接。

CONNECT 命令的基本参数

当客户端向代理服务器发送一条 CONNECT 命令之后,服务器会调用 CONNACK 命令,告知服务链接的状态。

CONNACK 命令的基本参数

当客户端和服务器建立连接之后,客户端就可以向服务器订阅某些主题的。(发送一条或多条 SUBSCRIBE消息 )。

表明当服务器接受到其他终端推送的此主题数据时,服务器会默认发送给它。

SUBSCRIBE 参数列表

当客户端成功的向服务器订阅某个主题之后,服务器会返回一条 SUBACK 的消息,其中包含一个或者多个 returnCode 参数。

SUBACK消息参数

returnCode : 值 0 - 2 ,表示成功订阅,并返回这个订阅消息的 QOS。值 128 : 订阅失败。

既然客户端可以向服务器订阅某个主题,当然也可以取消订阅。

与 SUBSCRIBE 订阅命令相反的命令是 UNSUBSCRIBE 取消订阅命令。

此命令非常简单。只有一个topic(主题)参数。

上面讲的是订阅,订阅是需要有消息从服务器发送过来的。但是服务器本身基本不产生数据,那数据从何而来呢?

通过另外一个客户端执行 PUBLISH 命令,往代理服务器发送数据。并最终通过代理服务器将数据传递给订阅了此服务的客户端。

PUBLISH 消息参数

对于 MQTT 的一张基本理解图

基本流程图:

最后总结

参考资料: 初识 MQTT

关于javamqtt步骤和java调用mq实例的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-22,除非注明,否则均为首码项目网原创文章,转载请注明出处。