From 0636da05bf1e6334c1b5d55b3ea53b0e06fbbc15 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=A6=82=E6=A2=A6=E6=8A=80=E6=9C=AF?= <596392912@qq.com>
Date: Mon, 12 Jul 2021 17:28:19 +0800
Subject: [PATCH] =?UTF-8?q?:memo:=20=E5=AE=8C=E5=96=84=20README.md?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 7 +++----
docs/graalvm.md | 2 ++
.../core/server/session/IMqttSession.java | 9 ++++++++
.../iot/mqtt/core/util/MqttTopicUtil.java | 21 +++++++++++++++++++
mica-mqtt-example/graalvm/reflect-config.json | 4 ----
.../graalvm/resource-config.json | 9 ++++++++
mica-mqtt-example/pom.xml | 14 +++++++++++--
.../src/main/resources/logging.properties | 1 +
8 files changed, 57 insertions(+), 10 deletions(-)
create mode 100644 docs/graalvm.md
create mode 100644 mica-mqtt-core/src/main/java/net/dreamlu/iot/mqtt/core/server/session/IMqttSession.java
create mode 100644 mica-mqtt-core/src/main/java/net/dreamlu/iot/mqtt/core/util/MqttTopicUtil.java
create mode 100644 mica-mqtt-example/graalvm/resource-config.json
diff --git a/README.md b/README.md
index 8ca3934..a858285 100644
--- a/README.md
+++ b/README.md
@@ -3,10 +3,7 @@
[![Codacy Badge](https://app.codacy.com/project/badge/Grade/30dad82f79f34e41bafbc3cef6b68fc3)](https://www.codacy.com/gh/lets-mica/mica-mqtt/dashboard?utm_source=github.com&utm_medium=referral&utm_content=lets-mica/mica-mqtt&utm_campaign=Badge_Grade)
[![GitHub](https://img.shields.io/github/license/lets-mica/mica-mqtt.svg?style=flat-square)](https://github.com/lets-mica/mica-mqtt/blob/master/LICENSE)
-基于 `t-io` 实现的 `mqtt` 物联网组件。
-
-## 使用
-目前仅仅是试验性质,不过 `t-io` 确实很稳,`mica-mqtt-example` 中有 `mqtt` 服务端和客户端测试代码, `main` 方法运行即可。
+基于 `t-io` 实现的**低延迟**、**高性能**的 `mqtt` 物联网组件。
## 功能
- [x] 支持 MQTT v3.1、v3.1.1 以及 v5.0 协议。
@@ -16,9 +13,11 @@
- [ ] MQTT 服务端接续完善,精力有限,周期可能会长一些。
## 文档
+- [t-io 官方问](https://www.tiocloud.com/doc/tio/85)
- [mqtt 协议文档](https://github.com/mcxiaoke/mqtt)
## 快速开始
+查看 `mica-mqtt-example` 中有 `mqtt` 服务端和客户端演示代码, `main` 方法运行即可。
### 1. 启动 Server 端
diff --git a/docs/graalvm.md b/docs/graalvm.md
new file mode 100644
index 0000000..612dcdf
--- /dev/null
+++ b/docs/graalvm.md
@@ -0,0 +1,2 @@
+# mica-mqtt 之 GraalVM native-image 编译成本机可执行程序
+
diff --git a/mica-mqtt-core/src/main/java/net/dreamlu/iot/mqtt/core/server/session/IMqttSession.java b/mica-mqtt-core/src/main/java/net/dreamlu/iot/mqtt/core/server/session/IMqttSession.java
new file mode 100644
index 0000000..87eef07
--- /dev/null
+++ b/mica-mqtt-core/src/main/java/net/dreamlu/iot/mqtt/core/server/session/IMqttSession.java
@@ -0,0 +1,9 @@
+package net.dreamlu.iot.mqtt.core.server.session;
+
+/**
+ * mqtt session
+ *
+ * @author L.cm
+ */
+public interface IMqttSession {
+}
diff --git a/mica-mqtt-core/src/main/java/net/dreamlu/iot/mqtt/core/util/MqttTopicUtil.java b/mica-mqtt-core/src/main/java/net/dreamlu/iot/mqtt/core/util/MqttTopicUtil.java
new file mode 100644
index 0000000..a63627a
--- /dev/null
+++ b/mica-mqtt-core/src/main/java/net/dreamlu/iot/mqtt/core/util/MqttTopicUtil.java
@@ -0,0 +1,21 @@
+package net.dreamlu.iot.mqtt.core.util;
+
+/**
+ * Mqtt Topic 工具
+ *
+ * @author L.cm
+ */
+public final class MqttTopicUtil {
+
+ public static String regexTopic(String topic) {
+ if (topic.startsWith("$")) {
+ topic = "\\" + topic;
+ }
+ return topic
+ .replaceAll("/", "\\\\/")
+ .replaceAll("\\+", "[^/]+")
+ .replaceAll("#", "(.+)") + "$";
+ }
+
+
+}
diff --git a/mica-mqtt-example/graalvm/reflect-config.json b/mica-mqtt-example/graalvm/reflect-config.json
index 3e6950f..dda3fb5 100644
--- a/mica-mqtt-example/graalvm/reflect-config.json
+++ b/mica-mqtt-example/graalvm/reflect-config.json
@@ -26,9 +26,5 @@
{
"name": "com.github.benmanes.caffeine.cache.PSAMS",
"allDeclaredConstructors": true
- },
- {
- "name": "org.tio.utils.caffeine.CaffeineUtils",
- "allDeclaredConstructors": true
}
]
diff --git a/mica-mqtt-example/graalvm/resource-config.json b/mica-mqtt-example/graalvm/resource-config.json
new file mode 100644
index 0000000..140dc00
--- /dev/null
+++ b/mica-mqtt-example/graalvm/resource-config.json
@@ -0,0 +1,9 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "pattern": "^logging.properties"
+ }
+ ]
+ }
+}
diff --git a/mica-mqtt-example/pom.xml b/mica-mqtt-example/pom.xml
index 50697c1..a11dc9d 100644
--- a/mica-mqtt-example/pom.xml
+++ b/mica-mqtt-example/pom.xml
@@ -116,7 +116,12 @@
mqtt-server-graalvm
${mainClass.server}
- --enable-all-security-services --report-unsupported-elements-at-runtime -H:+RemoveSaturatedTypeFlows --allow-incomplete-classpath -H:ReflectionConfigurationFiles=../graalvm/reflect-config.json
+ --enable-all-security-services
+ --report-unsupported-elements-at-runtime
+ -H:+RemoveSaturatedTypeFlows
+ --allow-incomplete-classpath
+ -H:ReflectionConfigurationFiles=../graalvm/reflect-config.json
+ -H:IncludeResources=../graalvm/resource-config.json
@@ -160,7 +165,12 @@
mqtt-client-graalvm
${mainClass.client}
- --enable-all-security-services --report-unsupported-elements-at-runtime -H:+RemoveSaturatedTypeFlows --allow-incomplete-classpath -H:ReflectionConfigurationFiles=../graalvm/reflect-config.json
+ --enable-all-security-services
+ --report-unsupported-elements-at-runtime
+ -H:+RemoveSaturatedTypeFlows
+ --allow-incomplete-classpath
+ -H:ReflectionConfigurationFiles=../graalvm/reflect-config.json
+ -H:IncludeResources=../graalvm/resource-config.json
diff --git a/mica-mqtt-example/src/main/resources/logging.properties b/mica-mqtt-example/src/main/resources/logging.properties
index b5665ac..4e9e895 100644
--- a/mica-mqtt-example/src/main/resources/logging.properties
+++ b/mica-mqtt-example/src/main/resources/logging.properties
@@ -1,4 +1,5 @@
handlers=java.util.logging.ConsoleHandler
.level=INFO
+com.github.benmanes.caffeine.cache.level=SEVERE
java.util.logging.ConsoleHandler.level=INFO
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
--
GitLab