diff --git a/README.md b/README.md index 5d2a7dac..8473d79a 100644 --- a/README.md +++ b/README.md @@ -1,26 +1,152 @@ -# JMQTT-Broker +# MQTT-Broker -JMQTT-Broker is an open source (GPL v3) Java based MQTT Broker with network implementation based on Java.NIO.2 +MQTT-Broker is an open source Java based MQTT Broker which implements MQTT v3.1.1 +and v5.0 protocol versions based on core library: https://github.com/JavaSaBr/RLib + +### Feature Map +1. MQTT Protocol features: + - [ ] Connection Request + - [X] Base handling + - [ ] CONNECT Variable Header + - [ ] Clean Start + - [ ] Will Flag + - [ ] Will QoS + - [ ] Will Retain + - [ ] User Name Flag + - [ ] Password Flag + - [ ] Keep Alive + - [ ] CONNECT Properties + - [ ] Session Expiry Interval + - [ ] Receive Maximum + - [ ] Maximum Packet Size + - [ ] Topic Alias Maximum + - [ ] Request Problem Information + - [X] User Property + - [ ] Authentication Method + - [ ] Authentication Data + - [ ] CONNECT Payload + - [X] Client Identifier + - [ ] Will Properties + - [ ] Will Delay Interval + - [ ] Payload Format Indicator + - [ ] Message Expiry Interval + - [ ] Content Type + - [ ] Response Topic + - [ ] Correlation Data + - [ ] User Property + - [ ] Will Topic + - [ ] Will Payload + - [X] User Name + - [X] Password + - [ ] Connect acknowledgement + - [X] Base handling + - [ ] Session Present + - [ ] CONNACK Properties + - [ ] Session Expiry Interval + - [ ] Receive Maximum + - [X] Maximum QoS + - [ ] Retain Available + - [ ] Maximum Packet Size + - [X] Assigned Client Identifier + - [ ] Topic Alias Maximum + - [ ] Reason String + - [ ] User Property + - [X] Wildcard Subscription Available + - [X] Subscription Identifiers Available + - [X] Shared Subscription Available + - [ ] Server Keep Alive + - [ ] Response Information + - [ ] Server Reference + - [ ] Authentication Method + - [ ] Authentication Data + - [ ] Publish message + - [X] Base handling + - [ ] RETAIN + - [ ] PUBLISH Properties + - [ ] Message Expiry Interval + - [X] Payload Format Indicator + - [ ] Topic Alias + - [X] Response Topic + - [X] User Property + - [ ] Subscription Identifier + - [X] Content Type + - [X] Publish acknowledgement + - [X] Base handling + - [X] PUBACK Properties + - [X] Reason String + - [X] User Property + - [X] Publish received + - [X] Base handling + - [X] PUBREC Properties + - [X] Reason String + - [X] User Property + - [X] Publish release + - [X] Base handling + - [X] PUBREL Properties + - [X] Reason String + - [X] User Property + - [X] Publish complete + - [X] Base handling + - [X] PUBCOMP Properties + - [X] Reason String + - [X] User Property + - [ ] Subscribe request + - [X] Base handling + - [ ] SUBSCRIBE Properties + - [ ] Subscription Identifier + - [X] User Property + - [ ] Subscription Options + - [ ] Retain Handling + - [ ] Retain as Published + - [ ] No Local + - [X] Subscribe acknowledgement + - [X] Base handling + - [X] SUBACK Properties + - [X] Reason String + - [X] User Property + - [X] Unsubscribe request + - [X] Base handling + - [X] UNSUBSCRIBE Properties + - [X] User Property + - [X] Unsubscribe acknowledgement + - [X] Base handling + - [X] UNSUBACK Properties + - [X] Reason String + - [X] User Property + - [ ] PING request + - [ ] PING response + - [ ] Disconnect notification + - [X] Base handling + - [ ] DISCONNECT Properties + - [ ] Session Expiry Interval + - [X] Reason String + - [X] User Property + - [ ] Server Reference + - [ ] Authentication exchange + - [X] Base handling + - [ ] AUTH Properties + - [ ] Authentication Method + - [ ] Authentication Data + - [ ] Reason String + - [ ] User Property +2. Extra features: + - [ ] ACL Service + - [ ] Disabled ACL + - [ ] Static file based ACL + - [ ] Authentication Service ## Dependencies for building -### java 13+ -##### Ubuntu: -```bash -sudo wget -qO - https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public | sudo apt-key add - -sudo add-apt-repository --yes https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/ -sudo apt-get install adoptopenjdk-13-hotspot -``` -##### Windows: [Windows x64 installer](https://github.com/AdoptOpenJDK/openjdk13-binaries/releases/download/jdk-13.0.1%2B9/OpenJDK13U-jdk_x64_windows_hotspot_13.0.1_9.msi) -##### MacOS: [MacOS x64 installer](https://github.com/AdoptOpenJDK/openjdk13-binaries/releases/download/jdk-13.0.1%2B9/OpenJDK13U-jdk_x64_mac_hotspot_13.0.1_9.pkg) +### java 25+ +#### [Temurin JDK](https://adoptium.net/temurin/releases) ### Docker ##### Ubuntu: [installation guide](https://docs.docker.com/install/linux/docker-ce/ubuntu) ##### Windows: [installation guide](https://docs.docker.com/docker-for-windows/install) ##### MacOS: [installation guide](https://docs.docker.com/docker-for-mac/install) ## Build ```bash -./gradlew buildSingleArtifact +./gradlew :application:bootJar ``` ## Run ```bash -./gradlew bootRun +./gradlew :application:bootRun ``` diff --git a/application/build.gradle b/application/build.gradle index b93e391f..6658c3a8 100644 --- a/application/build.gradle +++ b/application/build.gradle @@ -24,4 +24,12 @@ tasks.withType(GroovyCompile).configureEach { configurations.each { it.exclude group: "org.slf4j", module: "slf4j-log4j12" it.exclude group: "org.springframework.boot", module: "spring-boot-starter-logging" -} \ No newline at end of file +} + +bootRun { + mainClass = "javasabr.mqtt.broker.application.MqttBrokerApplication" +} + +bootJar { + mainClass = "javasabr.mqtt.broker.application.MqttBrokerApplication" +}