diff --git a/README.md b/README.md index 8ca3934ba07cb8a211de75c79636605c7ebd1c9f..a85828554279d3ae0a45064e079e1cf25ed5505d 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 0000000000000000000000000000000000000000..612dcdf5cd2055072bddc52ce2c2220df4f65ad1 --- /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 0000000000000000000000000000000000000000..87eef07afaa6b53afda96542c9c76e286b302b33 --- /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 0000000000000000000000000000000000000000..a63627af550cd73b2a81429fa3b208ef0e432857 --- /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 3e6950f67bfb182080bf8632b69f101b4cf50f2f..dda3fb5b334adb71db05c596c118cc60cf7d5033 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 0000000000000000000000000000000000000000..140dc008320e181ebf1f3ae4f3976b62f883bf39 --- /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 50697c1737b7c5fa7dc4dbcbb1c3bda9d0466d60..a11dc9d4d66a72ac2b8441744a39d63c6976fe78 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 b5665acb237608b2cc11e5ee91186e4d52e01292..4e9e895ad86844ba2bd7c9863c8e92a4a196eeb3 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