## Overview
MQTT is a machine-to-machine (M2M)/"Internet of Things" connectivity
protocol. It was designed as an extremely lightweight publish/subscribe
messaging transport. It is useful for connections with remote locations where
a small code footprint is required and/or network bandwidth is at a premium.
mqtt-client provides an ASL 2.0 licensed API to MQTT. It takes care of
automatically reconnecting to your MQTT server and restoring your client
session if any network failures occur. Applications can use a blocking API
style, a futures based API, or a callback/continuations passing API style.
## Using from Maven
Add the following to your maven `pom.xml` file.
<dependency>
<groupId>org.fusesource.mqtt-client</groupId>
<artifactId>mqtt-client</artifactId>
<version>1.12</version>
</dependency>
## Using from Gradle
Add the following to your gradle file.
compile 'org.fusesource.mqtt-client:mqtt-client:1.12'
## Using from any Other Build System
Download the
[uber jar file](https://repository.jboss.org/nexus/content/groups/fs-public/org/fusesource/mqtt-client/mqtt-client/1.7/mqtt-client-1.7-uber.jar)
and add it to your build. The uber contains all the stripped down dependencies
which the mqtt-client depends on from other projects.
## Using on Java 1.4
We also provide an
[java 1.4 uber jar file](https://repository.jboss.org/nexus/content/groups/fs-public/org/fusesource/mqtt-client/mqtt-client-java1.4-uber/1.7/mqtt-client-java1.4-uber-1.7.jar)
which is compatible with Java 1.4 JVMs. This version of the jar
does not support SSL connections since the SSLEngine class used to implement SSL on NIO
was not introduced until Java 1.5.
## Configuring the MQTT Connection
The blocking, future, and callback APIs all share the same connection setup.
You create a new instance of the `MQTT` class and configure it with connection
and socket related options. At a minimum the `setHost` method be called before
attempting to connect.
MQTT mqtt = new MQTT();
mqtt.setHost("localhost", 1883);
// or
mqtt.setHost("tcp://localhost:1883");
### Controlling MQTT Options
* `setClientId` : Use to set the client Id of the session. This is what an MQTT server
uses to identify a session where `setCleanSession(false);` is being used. The id must be
23 characters or less. Defaults to auto generated id (based on your socket address, port
and timestamp).
* `setCleanSession` : Set to false if you want the MQTT server to persist topic subscriptions
and ack positions across client sessions. Defaults to true.
* `setKeepAlive` : Configures the Keep Alive timer in seconds. Defines the maximum time
interval between messages received from a client. It enables the server to detect that the
network connection to a client has dropped, without having to wait for the long TCP/IP timeout.
* `setUserName` : Sets the user name used to authenticate against the server.
* `setPassword` : Sets the password used to authenticate against the server.
* `setWillTopic`: If set the server will publish the client's Will
message to the specified topics if the client has an unexpected
disconnection.
* `setWillMessage`: The Will message to send. Defaults to a zero length message.
* `setWillQos` : Sets the quality of service to use for the Will message. Defaults
to QoS.AT_MOST_ONCE.
* `setWillRetain`: Set to true if you want the Will to be published with the retain
option.
* `setVersion`: Set to "3.1.1" to use MQTT version 3.1.1. Otherwise defaults to the
3.1 protocol version.
### Controlling Connection Reconnects
Connection will automatically reconnect and re-establish messaging session
if any network error occurs. You can control how often the reconnect
is attempted and define maximum number of attempts of reconnects using
the following methods:
* `setConnectAttemptsMax` : The maximum number of reconnect attempts before an error
is reported back to the client on the first attempt by the client to connect to a server. Set
to -1 to use unlimited attempts. Defaults to -1.
* `setReconnectAttemptsMax` : The maximum number of reconnect attempts before an error
is reported back to the client after a server connection had previously been established. Set
to -1 to use unlimited attempts. Defaults to -1.
* `setReconnectDelay` : How long to wait in ms before the first reconnect
attempt. Defaults to 10.
* `setReconnectDelayMax` : The maximum amount of time in ms to wait between
reconnect attempts. Defaults to 30,000.
* `setReconnectBackOffMultiplier` : The Exponential backoff be used between reconnect
attempts. Set to 1 to disable exponential backoff. Defaults to 2.
### Configuring Socket Options
You can adjust some socket options by using the following methods:
* `setReceiveBufferSize` : Sets the size of the internal socket receive
buffer. Defaults to 65536 (64k)
* `setSendBufferSize` : Sets the size of the internal socket send buffer.
Defaults to 65536 (64k)
* `setTrafficClass` : Sets traffic class or type-of-service octet in the IP
header for packets sent from the transport. Defaults to `8` which
means the traffic should be optimized for throughput.
### Throttling Connections
If you want slow down the read or write rate of your connections, use
the following methods:
* `setMaxReadRate` : Sets the maximum bytes per second that this transport will
receive data at. This setting throttles reads so that the rate is not exceeded.
Defaults to 0 which disables throttling.
* `setMaxWriteRate` : Sets the maximum bytes per second that this transport will
send data at. This setting throttles writes so that the rate is not exceeded.
Defaults to 0 which disables throttling.
### Using SSL connections
If you want to connect over SSL/TLS instead of TCP, use an "ssl://" or
"tls://" URI prefix instead of "tcp://" for the `host` field. For finer
grained control of which algorithm is used. Supported protocol values are:
* `ssl://` - Use the JVM default version of the SSL algorithm.
* `sslv*://` - Use a specific SSL version where `*` is a version
supported by your JVM. Example: `sslv3`
* `tls://` - Use the JVM default version of the TLS algorithm.
* `tlsv*://` - Use a specific TLS version where `*` is a version
supported by your JVM. Example: `tlsv1.1`
The client will use the default JVM `SSLContext` which is configured via JVM
system properties unless you configure the MQTT instance using the
`setSslContext` method.
SSL connections perform blocking operations against internal thread pool
unless you call the `setBlockingExecutor` method to configure that executor
they will use instead.
### Selecting the Dispatch Queue
A [HawtDispatch](http://hawtdispatch.fusesource.org/) dispatch queue is used
to synchronize access to the connection. If an explicit queue is not
configured via the `setDispatchQueue` method, then a new queue will be created
for the connection. Setting an explicit queue might be handy if you want
multiple connection to share the same queue for synchronization.
## Using the Blocking API
The `MQTT.connectBlocking` method establishes a connection and provides you a connection
with an blocking API.
BlockingConnection connection = mqtt.blockingConnection();
connection.connect();
Publish messages to a topic using the `publish` method:
connection.publish("foo", "Hello".getBytes(), QoS.AT_LEAST_ONCE, false);
You can subscribe to multiple topics using the the `subscribe` method:
Topic[] topics = {new Topic("foo", QoS.AT_LEAST_ONCE)};
byte[] qoses = connection.subscribe(topics);
Then receive and acknowledge consumption of messages using the `receive`, and `ack`
methods:
Message message = connection.receive();
System.out.println(message.getTopic());
byte[] payload = message.getPayload();
// process the message then:
message.ack();
Finally to disconnect:
connection.disconnect();
## Usi
没有合适的资源?快使用搜索试试~ 我知道了~
A Java MQTT Client.zip
共64个文件
java:42个
xml:6个
md:3个
需积分: 1 0 下载量 103 浏览量
2023-12-29
20:39:20
上传
评论
收藏 161KB ZIP 举报
温馨提示
A Java MQTT Client.zip
资源推荐
资源详情
资源评论
收起资源包目录
A Java MQTT Client.zip (64个子文件)
abb
mqtt-client-website
pom.xml 7KB
src
WEB-INF
web.xml 1KB
scalate
layouts
default.jade 2KB
_navigation.ssp.md 81B
styles
impact
css
site.css 5KB
index.page 235B
images
project-logo.png 10KB
project-logo-vector.png 78KB
dev-guide.md 204B
ext
ScalatePackage.scala 1KB
scalate
Boot.scala 2KB
Website.scala 1KB
.gitignore 16B
pom.xml 11KB
src
main
resources
license-header.txt 631B
readme.md 12KB
mqtt-client-java1.4-uber
pom.xml 6KB
src
main
java
org
fusesource
mqtt
All.java 716B
.gitignore 262B
license.txt 11KB
mqtt-client
pom.xml 6KB
src
test
resources
log4j.properties 1KB
org
fusesource
mqtt
client
apollo-mqtt.xml 1KB
java
org
fusesource
mqtt
client
CallbackApiTest.java 4KB
BlockingApiBenchmark.java 3KB
FutureApiTest.java 2KB
BrokerTestSupport.java 2KB
BlockingApiTest.java 4KB
codec
PUBLISHTest.java 2KB
main
java
org
fusesource
mqtt
client
QoS.java 861B
Message.java 3KB
Promise.java 3KB
MQTTException.java 295B
Listener.java 1KB
CallbackConnection.java 37KB
MQTT.java 11KB
NoopCallback.java 1KB
Future.java 1KB
ExtendedListener.java 1KB
FutureConnection.java 8KB
ProxyCallback.java 1KB
Callback.java 948B
BlockingConnection.java 5KB
Topic.java 2KB
Tracer.java 1KB
cli
Listener.java 10KB
Publisher.java 12KB
codec
UNSUBSCRIBE.java 4KB
MQTTFrame.java 4KB
SUBSCRIBE.java 4KB
PINGREQ.java 1KB
CONNACK.java 3KB
PINGRESP.java 1KB
PUBREL.java 3KB
PUBLISH.java 4KB
CONNECT.java 8KB
PUBCOMP.java 1KB
MessageSupport.java 5KB
PUBACK.java 1KB
SUBACK.java 3KB
UNSUBACK.java 1KB
MQTTProtocolCodec.java 4KB
DISCONNECT.java 1KB
PUBREC.java 1KB
共 64 条
- 1
资源评论
zero2100
- 粉丝: 163
- 资源: 2464
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- PSCAD光伏并网模型0.5MW,BOOST、MPPT控制
- by_selenium.py
- python-3.9.7-macosx10.9.pkg
- imageTransfer-master.zip
- Last Loaded 模拟时钟.DBK
- 基于Java的黑马OAUTH2.0权限管理专题学习记录设计源码
- 弱电系统方案设计安防监控技术资料门禁网络工程图纸报价资料图纸案例经典典藏:二十八层宾馆大楼全套电气施工图纸(54张)
- 2024智能云服务交付工程师(战新业务补充认真)理论考试题库含答案
- 弱电系统方案设计安防监控技术资料门禁网络工程图纸报价资料图纸案例经典的标准厂房水电图两套(参考用)
- 企业级网络安全治理全景架构图
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功