# mica-mqtt-server-spring-boot-starter 使用文档
## 版本兼容
| 要求 | Spring boot 版本 |
|-----|----------------|
| 最低 | 2.1.0.RELEASE |
| 最高 | 3.x |
## 一、添加依赖
```xml
<dependency>
<groupId>net.dreamlu</groupId>
<artifactId>mica-mqtt-server-spring-boot-starter</artifactId>
<version>${最新版本}</version>
</dependency>
```
## 二、mqtt 服务
### 2.1 配置项
```yaml
mqtt:
server:
enabled: true # 是否开启服务端,默认:true
# ip: 0.0.0.0 # 服务端 ip 默认为空,0.0.0.0,建议不要设置
port: 1883 # 端口,默认:1883
name: Mica-Mqtt-Server # 名称,默认:Mica-Mqtt-Server
buffer-allocator: HEAP # 堆内存和堆外内存,默认:堆内存
heartbeat-timeout: 120000 # 心跳超时,单位毫秒,默认: 1000 * 120
read-buffer-size: 8KB # 接收数据的 buffer size,默认:8k
max-bytes-in-message: 10MB # 消息解析最大 bytes 长度,默认:10M
auth:
enable: false # 是否开启 mqtt 认证
username: mica # mqtt 认证用户名
password: mica # mqtt 认证密码
debug: true # 如果开启 prometheus 指标收集建议关闭
stat-enable: true # 开启指标收集,debug 和 prometheus 开启时需要打开,默认开启,关闭节省内存
web-port: 8083 # http、websocket 端口,默认:8083
websocket-enable: true # 是否开启 websocket,默认: true
http-enable: false # 是否开启 http api,默认: false
http-basic-auth:
enable: false # 是否开启 http basic auth,默认: false
username: mica # http basic auth 用户名
password: mica # http basic auth 密码
ssl: # mqtt tcp ssl 认证
enabled: false # 是否开启 ssl 认证,2.1.0 开始支持双向认证
keystore-path: # 必须参数:ssl keystore 目录,支持 classpath:/ 路径。
keystore-pass: # 必选参数:ssl keystore 密码
truststore-path: # 可选参数:ssl 双向认证 truststore 目录,支持 classpath:/ 路径。
truststore-pass: # 可选参数:ssl 双向认证 truststore 密码
client-auth: none # 是否需要客户端认证(双向认证),默认:NONE(不需要)
```
注意:**ssl** 存在三种情况
| 服务端开启ssl | 客户端 |
| ---------------------------------------- | --------------------------------------------- |
| ClientAuth 为 NONE(不需要客户端验证) | 仅仅需要开启 ssl 即可不用配置证书 |
| ClientAuth 为 OPTIONAL(与客户端协商) | 需开启 ssl 并且配置 truststore 证书 |
| ClientAuth 为 REQUIRE (必须的客户端验证) | 需开启 ssl 并且配置 truststore、 keystore证书 |
### 2.2 可实现接口(注册成 Spring Bean 即可)
| 接口 | 是否必须 | 说明 |
|-------------------------------|------------|-----------------------------------------------|
| IMqttServerUniqueIdService | 否 | 用于 clientId 不唯一时,自定义实现唯一标识,后续接口使用它替代 clientId |
| IMqttServerAuthHandler | 是 | 用于服务端认证 |
| IMqttServerSubscribeValidator | 否(建议实现) | 1.1.3 新增,用于对客户端订阅校验 |
| IMqttServerPublishPermission | 否(建议实现) | 1.2.2 新增,用于对客户端发布权限校验 |
| IMqttMessageListener | 否(1.3.x为否) | 消息监听 |
| IMqttConnectStatusListener | 是 | 连接状态监听 |
| IMqttSessionManager | 否 | session 管理 |
| IMqttSessionListener | 否 | session 监听 |
| IMqttMessageStore | 集群是,单机否 | 遗嘱和保留消息存储 |
| AbstractMqttMessageDispatcher | 集群是,单机否 | 消息转发,(遗嘱、保留消息转发) |
| IpStatListener | 否 | t-io ip 状态监听 |
| IMqttMessageInterceptor | 否 | 消息拦截器,1.3.9 新增 |
### 2.3 IMqttMessageListener (用于监听客户端上传的消息) 使用示例
```java
@Service
public class MqttServerMessageListener implements IMqttMessageListener {
private static final Logger logger = LoggerFactory.getLogger(MqttServerMessageListener.class);
@Override
public void onMessage(ChannelContext context, String clientId, Message message) {
logger.info("clientId:{} message:{} payload:{}", clientId, message, new String(message.getPayload(), StandardCharsets.UTF_8));
}
}
```
### 2.4 自定义配置(可选)
```java
@Configuration(proxyBeanMethods = false)
public class MqttServerCustomizerConfiguration {
@Bean
public MqttServerCustomizer mqttServerCustomizer() {
return new MqttServerCustomizer() {
@Override
public void customize(MqttServerCreator creator) {
// 此处可自定义配置 creator,会覆盖 yml 中的配置
System.out.println("----------------MqttServerCustomizer-----------------");
}
};
}
}
```
### 2.5 MqttServerTemplate 使用示例
```java
import net.dreamlu.iot.mqtt.spring.server.MqttServerTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.nio.ByteBuffer;
/**
* @author wsq
*/
@Service
public class ServerService {
@Autowired
private MqttServerTemplate server;
public boolean publish(String body) {
server.publishAll("/test/123", body.getBytes(StandardCharsets.UTF_8));
return true;
}
}
```
### 2.6 客户端上下线监听
使用 Spring event 解耦客户端上下线监听,注意: `1.3.4` 开始支持。会跟自定义的 `IMqttConnectStatusListener` 实现冲突,取一即可。
```java
@Service
public class MqttConnectStatusListener {
private static final Logger logger = LoggerFactory.getLogger(MqttConnectStatusListener.class);
@EventListener
public void online(MqttClientOnlineEvent event) {
logger.info("MqttClientOnlineEvent:{}", event);
}
@EventListener
public void offline(MqttClientOfflineEvent event) {
logger.info("MqttClientOfflineEvent:{}", event);
}
}
```
### 2.7 基于 mq 消息广播集群处理
详见: [mica-mqtt-broker](../../mica-mqtt-broker)
### 2.8 Prometheus + Grafana 监控对接
```xml
<!-- 开启 prometheus 指标收集 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
```
| 支持得指标 | 说明 |
| ------------------------------ | ---------------- |
| mqtt_connections_accepted | 共接受过连接数 |
| mqtt_connections_closed | 关闭过的连接数 |
| mqtt_connections_size | 当前连接数 |
| mqtt_messages_handled_packets | 已处理消息数 |
| mqtt_messages_handled_bytes | 已处理消息字节数 |
| mqtt_messages_received_packets | 已接收消息数 |
| mqtt_messages_received_bytes | 已处理消息字节数 |
| mqtt_messages_send_packets | 已发送消息数 |
| mqtt_messages_send_
没有合适的资源?快使用搜索试试~ 我知道了~
mica mqtt 组件 v2.2.4.zip
共285个文件
java:222个
md:17个
xml:13个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 123 浏览量
2023-10-03
21:59:40
上传
评论
收藏 534KB ZIP 举报
温馨提示
mica mqtt 组件 v2.2.4.zip
资源推荐
资源详情
资源评论
收起资源包目录
mica mqtt 组件 v2.2.4.zip (285个子文件)
mvnw.cmd 6KB
.editorconfig 364B
.gitignore 569B
mica-mqtt-api.http 2KB
mica-mqtt-api.http 2KB
ISSUE_TEMPLATE 400B
maven-wrapper.jar 50KB
MqttDecoder.java 27KB
DefaultMessageSerializer.java 26KB
MqttEncoder.java 24KB
DefaultMqttServerProcessor.java 22KB
MqttWebServerAioHandler.java 22KB
MqttMessageBuilders.java 21KB
MqttClient.java 18KB
MqttServerCreator.java 18KB
MqttWebServer.java 15KB
MqttClientCreator.java 14KB
DefaultMqttClientProcessor.java 14KB
MqttProperties.java 14KB
InMemoryMqttSessionManager.java 13KB
MqttServer.java 11KB
MqttHttpApi.java 11KB
MqttClientKit.java 9KB
MqttClientTemplate.java 8KB
MqttServerConfiguration.java 7KB
DefaultMqttClientSession.java 7KB
MqttWsMsgHandler.java 6KB
TopicUtil.java 6KB
MqttServerAioHandler.java 6KB
MqttServerAioListener.java 6KB
Message.java 5KB
MqttServerMetrics.java 5KB
MqttClusterMessageListener.java 5KB
MqttClientConfiguration.java 5KB
MavenWrapperDownloader.java 5KB
MqttClientSubscribeDetector.java 5KB
MqttClientAioListener.java 4KB
MqttClientProperties.java 4KB
MqttCodecUtil.java 4KB
AbstractMqttMessageDispatcher.java 4KB
MqttServerProperties.java 4KB
MqttServerKit.java 4KB
IMqttClientSession.java 4KB
MqttWillMessage.java 4KB
UdpCluster.java 4KB
IMqttSessionManager.java 4KB
MqttServerTemplate.java 4KB
TopicUtilTest.java 4KB
TopicFilterType.java 3KB
ThreadUtil.java 3KB
MqttClientAioHandler.java 3KB
Result.java 3KB
MqttSubscriptionOption.java 3KB
WriteBuffer.java 3KB
MqttMessageFactory.java 3KB
MqttBrokerServiceImpl.java 3KB
MqttConnectVariableHeader.java 3KB
MqttBrokerConfiguration.java 3KB
RedisMqttMessageDownReceiver.java 3KB
RedisMqttMessageStore.java 3KB
MqttHttpRequestHandler.java 3KB
MqttSign.java 3KB
MqttClientTest.java 3KB
MqttMessage.java 3KB
MqttConnectReasonCode.java 3KB
MqttServerTest.java 3KB
BasicAuthFilter.java 3KB
MqttClientSubscription.java 3KB
MqttServerProcessor.java 3KB
MqttFixedHeader.java 3KB
MqttSign.java 3KB
MqttMessageInterceptors.java 2KB
RedisMqttMessageExchangeReceiver.java 2KB
MqttConnectPayload.java 2KB
PayloadEncode.java 2KB
MqttBenchmark.java 2KB
MqttPendingPublish.java 2KB
SpringEventMqttConnectStatusListener.java 2KB
IMqttClientProcessor.java 2KB
MqttClientTest.java 2KB
MqttHttpRoutes.java 2KB
MqttClientTest.java 2KB
MqttMessageType.java 2KB
MqttUnsubAckMessage.java 2KB
MqttDisconnectReasonCode.java 2KB
RedisMqttConnectStatusListener.java 2KB
MqttHttpHelper.java 2KB
MqttMessageInterceptor.java 2KB
InMemoryMqttMessageStore.java 2KB
Subscribe.java 2KB
GzipCompression.java 2KB
MqttSubAckReasonCode.java 2KB
RedisMqttServerManage.java 2KB
MqttSubAckPayload.java 2KB
SpringEventMqttClientConnectListener.java 2KB
AckTimerTask.java 2KB
MqttVersion.java 2KB
IMqttServerPublishPermission.java 2KB
SpringEventMqttMessageListener.java 2KB
IMqttServerAuthHandler.java 2KB
共 285 条
- 1
- 2
- 3
资源评论
码云笔记
- 粉丝: 2w+
- 资源: 5837
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功