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