Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
mica
mica-mqtt
提交
622031c4
mica-mqtt
项目概览
mica
/
mica-mqtt
通知
71
Star
1
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
mica-mqtt
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
622031c4
编写于
12月 25, 2021
作者:
浅梦2013
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of
https://github.com/lets-mica/mica-mqtt
上级
b6e1f6fe
0de4bba6
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
8 addition
and
13 deletion
+8
-13
CHANGELOG.md
CHANGELOG.md
+2
-1
mica-mqtt-core/README.md
mica-mqtt-core/README.md
+0
-8
mica-mqtt-core/src/main/java/net/dreamlu/iot/mqtt/core/server/auth/IMqttServerPublishPermission.java
...t/mqtt/core/server/auth/IMqttServerPublishPermission.java
+2
-1
mica-mqtt-core/src/main/java/net/dreamlu/iot/mqtt/core/server/support/DefaultMqttServerProcessor.java
.../mqtt/core/server/support/DefaultMqttServerProcessor.java
+2
-2
mica-mqtt-spring-boot-starter/README.md
mica-mqtt-spring-boot-starter/README.md
+2
-1
未找到文件。
CHANGELOG.md
浏览文件 @
622031c4
...
...
@@ -4,7 +4,8 @@
### v1.2.2 - 2021-12-26
-
:sparkles: mica-mqtt server 添加发布权限接口,无权限直接断开连接,避免高级别 qos 重试浪费资源。
-
:sparkles: mica-mqtt-broker 优化节点信息存储
-
:sparkles: mqtt client 抽象 IMqttClientSession 接口。
-
:sparkles: mica-mqtt client 重复订阅优化。感谢
`@一片小雨滴`
-
:sparkles: mica-mqtt client 抽象 IMqttClientSession 接口。
-
:bug: 修复重构 AbstractMqttMessageDispatcher 保持跟 mica-mqtt-broker 逻辑一致 gitee #I4MA6A 感谢
`@胡萝博`
-
:arrow_up: mica-mqtt-example 升级 log4j2 到 2.17.0
...
...
mica-mqtt-core/README.md
浏览文件 @
622031c4
...
...
@@ -143,11 +143,3 @@ mqttServer.publishAll("/test/123", ByteBuffer.wrap("mica最牛皮".getBytes()));
// 停止服务
mqttServer
.
stop
();
```
## 基于 mq 消息广播集群处理
-
实现
`IMqttConnectStatusListener`
处理设备状态存储。
-
实现
`IMqttMessageListener`
将消息转发到 mq,业务按需处理 mq 消息。
-
实现
`IMqttMessageStore`
存储遗嘱和保留消息。
-
实现
`AbstractMqttMessageDispatcher`
将消息发往 mq,mq 再广播回 mqtt 集群,mqtt 将消息发送到设备。
-
业务消息发送到 mq,mq 广播到 mqtt 集群,mqtt 将消息发送到设备。
mica-mqtt-core/src/main/java/net/dreamlu/iot/mqtt/core/server/auth/IMqttServerPublishPermission.java
浏览文件 @
622031c4
...
...
@@ -33,8 +33,9 @@ public interface IMqttServerPublishPermission {
* @param clientId 客户端 id
* @param topic topic
* @param qoS MqttQoS
* @param isRetain 是否保留消息
* @return 否有发布权限
*/
boolean
hasPermission
(
ChannelContext
context
,
String
clientId
,
String
topic
,
MqttQoS
qoS
);
boolean
hasPermission
(
ChannelContext
context
,
String
clientId
,
String
topic
,
MqttQoS
qoS
,
boolean
isRetain
);
}
mica-mqtt-core/src/main/java/net/dreamlu/iot/mqtt/core/server/support/DefaultMqttServerProcessor.java
浏览文件 @
622031c4
...
...
@@ -199,7 +199,7 @@ public class DefaultMqttServerProcessor implements MqttServerProcessor {
MqttPublishVariableHeader
variableHeader
=
message
.
variableHeader
();
String
topicName
=
variableHeader
.
topicName
();
// 1. 判断是否有发布权限,没有权限则断开 mqtt 连接 mqtt 5.x qos1、qos2 可以响应 reasonCode
if
(
publishPermission
!=
null
&&
!
publishPermission
.
hasPermission
(
context
,
clientId
,
topicName
,
mqttQoS
))
{
if
(
publishPermission
!=
null
&&
!
publishPermission
.
hasPermission
(
context
,
clientId
,
topicName
,
mqttQoS
,
fixedHeader
.
isRetain
()
))
{
Tio
.
remove
(
context
,
"Mqtt clientId:"
+
clientId
+
" publish topic: "
+
topicName
+
" no permission."
);
return
;
}
...
...
@@ -428,7 +428,7 @@ public class DefaultMqttServerProcessor implements MqttServerProcessor {
message
.
setPayload
(
payload
);
}
message
.
setMessageType
(
MessageType
.
UP_STREAM
);
message
.
setRetain
(
fixedHeader
.
isRetain
()
);
message
.
setRetain
(
isRetain
);
message
.
setDup
(
fixedHeader
.
isDup
());
message
.
setTimestamp
(
System
.
currentTimeMillis
());
Node
clientNode
=
context
.
getClientNode
();
...
...
mica-mqtt-spring-boot-starter/README.md
浏览文件 @
622031c4
...
...
@@ -63,7 +63,8 @@ mqtt:
| --------------------------- | -------------- | ------------------------- |
| IMqttServerUniqueIdService | 否 | 用于 clientId 不唯一时,自定义实现唯一标识,后续接口使用它替代 clientId |
| IMqttServerAuthHandler | 是 | 用于服务端认证 |
| IMqttServerSubscribeValidator | 是 | 1.1.3 新增,用于服务端订阅校验 |
| IMqttServerSubscribeValidator | 否(建议实现) | 1.1.3 新增,用于对客户端订阅校验 |
| IMqttServerPublishPermission | 否(建议实现) | 1.2.2 新增,用于对客户端发布权限校验 |
| IMqttMessageListener | 是 | 消息监听 |
| IMqttConnectStatusListener | 是 | 连接状态监听 |
| IMqttSessionManager | 否 | session 管理 |
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录